触发器 :new和 :old的使用
:new --为一个引用最新的列值;
:old --为一个引用以前的列值;
这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在,且update语句两个都有,而insert只有:new ,delete 只有:old;
特性 |
INSERT |
UPDATE |
DELETE |
OLD |
NULL |
实际值 |
实际值 |
NEW |
实际值 |
实际值 |
NULL |
实例:
1 create or replace trigger TRI_PrintTest
2 before delete or insert or update on TEST_EXAM --触发事件
3 for each row -- 每修改一行都需要调用此过程
4 begin
5 dbms_output.put_line(:new.IDNEW); --IDNEW字段更新后的值
6 dbms_output.put_line(:old.IDNEW); --IDNEW字段更新前的值
7 end;
原IDNEW字段是1时,
使用
update TEST_EXAM set IDNEW=5 where SN='5454';
则打印结果为:
5
1