例子:
1 /* 2 触发器应用场景2:数据的确认 3 涨后的薪水不能少于涨前的薪水 4 1. :old 和 :new 代表的是同一条记录 5 2. :old 表示操作该行之前,这一行的值; 6 :new 表示操作改行之后,这一行的值 7 */ 8 9 create or replace trigger checksalary 10 before update 11 on emp1 12 for each row 13 declare 14 begin 15 if :new.sal < :old.sal then 16 17 raise_application_error(-20002,'涨后的薪水:'||:new.sal||'不能少于涨前的薪水:'||:old.sal); 18 end if; 19 end; 20 /
检测:
1 update emp1 set sal=sal+1 where empno=7839; --符合要求 2 3 update emp1 set sal=sal-1 where empno=7839; --不符合要求,插入时有错误提示
结果: