drop table if exists emp;
create table emp (empno int, sal decimal, ename varchar(100));
insert into emp values (1,1000,'A');
insert into emp values (2,2000,'B');
insert into emp values (3,3000,'C');
insert into emp values (4,4000,'D');
DELIMITER $$
drop trigger if exists maintain_min_sal$$
CREATE TRIGGER `maintain_min_sal` BEFORE UPDATE ON `emp`
FOR EACH ROW
BEGIN
DECLARE zero_multiply CONDITION FOR SQLSTATE '45000';
-- DECLARE EXIT HANDLER FOR zero_multiply SET @error = 'salary cannot be decremented';
IF NEW.sal < OLD.sal THEN
signal zero_multiply SET message_text = 'salary cannot be decremented';
END IF;
END$$
DELIMITER ;
mysql> update emp set sal=300 where empno=1;
ERROR 1644 (45000): salary cannot be decremented
create table emp (empno int, sal decimal, ename varchar(100));
insert into emp values (1,1000,'A');
insert into emp values (2,2000,'B');
insert into emp values (3,3000,'C');
insert into emp values (4,4000,'D');
DELIMITER $$
drop trigger if exists maintain_min_sal$$
CREATE TRIGGER `maintain_min_sal` BEFORE UPDATE ON `emp`
FOR EACH ROW
BEGIN
DECLARE zero_multiply CONDITION FOR SQLSTATE '45000';
-- DECLARE EXIT HANDLER FOR zero_multiply SET @error = 'salary cannot be decremented';
IF NEW.sal < OLD.sal THEN
signal zero_multiply SET message_text = 'salary cannot be decremented';
END IF;
END$$
DELIMITER ;
mysql> update emp set sal=300 where empno=1;
ERROR 1644 (45000): salary cannot be decremented

No comments:
Post a Comment