--after和before CREATE OR REPLACE TRIGGER del_emp1 BEFORE update OR insert OR delete ON scott.emp REFERENCING newAS nn old AS oo FOR EACH ROW WHEN (nn.sal > 2000) BEGIN IF INSERTING THEN dbms_output.put_line('THE OPERATION IS INSERT'); ELSIF UPDATING THEN dbms_output.put_line('THE OPERATION IS UPDATE'); ELSIF DELETING THEN dbms_output.put_line('THE OPERATION IS DELETE'); ELSE dbms_output.put_line('OTHERS OPERATION'); END IF; END; CREATE OR REPLACE TRIGGER del_emp2 after update OR insert OR delete ON scott.emp REFERENCING newAS nn old AS oo FOR EACH ROW WHEN (nn.sal > 2000) BEGIN IF INSERTING THEN dbms_output.put_line('THE OPERATION IS INSERT'); ELSIF UPDATING THEN dbms_output.put_line('THE OPERATION IS UPDATE'); ELSIF DELETING THEN dbms_output.put_line('THE OPERATION IS DELETE'); ELSE dbms_output.put_line('OTHERS OPERATION'); END IF; END; update emp set sal=7000 where emp.ename='SMITH'; --after和before的区别是:before是先执行begin后触发触发器,after是先执行触发器而后执行begin内容. CREATE OR REPLACE TRIGGER check_emp BEFORE update OR insert OR delete ON scott.emp REFERENCING newAS nn old AS oo FOR EACH ROW /*WHEN (nn.sal < 2000)*/BEGIN IF INSERTING THEN dbms_output.put_line('THE OPERATION IS INSERT'); ELSIF UPDATING THEN dbms_output.put_line('THE OPERATION IS UPDATE'); ELSIF DELETING THEN dbms_output.put_line('THE OPERATION IS DELETE'); ELSE dbms_output.put_line('OTHERS OPERATION'); END IF; END; select *from emp; begin savepoint s1; delete emp where sal=4000; rollback to s1; end;
触发器after和before
免责声明:文章转载自《触发器after和before》仅用于学习参考。如对内容有疑问,请及时联系本站处理。
上篇关于webpack打包js和css第1周:指针与字符串下篇
宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=