觸發(fā)語句 |
:old |
:new |
Insert |
所有字段都是空(null) |
將要插入的數(shù)據(jù) |
Update |
更新以前該行的值 |
更新后的值 |
delete |
刪除以前該行的值 |
所有字段都是空(null) |
示例2:確認數(shù)據(jù)(檢查emp表中sal的修改值不低于原值)
SQL> create or replace trigger checkSal
before update of sal on emp
for each row
declare
begin
if :new.sal:old.sal then
raise_application_error(-20001,'更新后的薪水比更新前小');
end if;
end;
/
Trigger created
運行后結(jié)果:
SQL> update emp set sal=260 where empno=7499;
update emp set sal=260 where empno=7499
ORA-20001: 更新后的薪水比更新前小
ORA-06512: 在 "SCOTT.CHECKSAL", line 4
ORA-04088: 觸發(fā)器 'SCOTT.CHECKSAL'執(zhí)行過程中出錯
觸發(fā)器總結(jié)
觸發(fā)器可用于
• 數(shù)據(jù)確認
• 實施復雜的安全性檢查
• 做審計,跟蹤表上所做的數(shù)據(jù)操作等
查詢觸發(fā)器、過程及函數(shù)
• Select * from user_triggers;
• Select * from user_source;