CREATE OR REPLACE TRIGGER test_trigger
AFTER INSERT OR UPDATE OF sal OR DELETE
ON emp
FOR EACH ROW
BEGIN
CASE
WHEN INSERTING THEN --当事件为INSERT时,INSERTING为TRUE
/*
:NEW关键字可以获取新记录的数据,它只能用于行级触发器
*/
DBMS_OUTPUT.PUT_LINE('INSERT INTO EMP VALUES('||:NEW.empno||','||:NEW.ename||','||:NEW.job||','||:NEW.mgr||','||:NEW.hiredate||','||:NEW.sal||','||:NEW.comm||','||:NEW.deptno||')');
WHEN UPDATING THEN --当事件为UPDATE时,UPDATING为TRUE
DBMS_OUTPUT.PUT_LINE('UPDATING emp which empno='||:OLD.empno||'to sal:'||:NEW.sal);--:OLD关键字可以获取旧记录的数据,它只能用于行级触发器
WHEN DELETING THEN --当事件为DELETE时,DELETING为TRUE
DBMS_OUTPUT.PUT_LINE('DELETING emp which empno='||:OLD.empno);--:OLD关键字可以获取旧记录的数据,它只能用于行级触发器
ELSE
NULL;
END CASE;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(SQLCODE,SQLERRM);
END test_trigger;