触发器是特殊的存储过程,但它的执行不是由手工调用,也不是由程序执行,触发器必须由事件才能触发。触发器的触发事件分可为3类,分别是DML事件、DDL事件和数据库事件。
创建DML触发器需要CREATE TRIGGER系统权限。创建DML触发器的语法如下:
CREATE OR REPLACE TRIGGER TG_NAME
BEFORE | AFTER
INSERT OR DELETE OR UPDATE [OF COL1,COL2,...]
ON 表名
[FOR EACH ROW]
[WHEN 条件]
DECLARE
...
BEGIN
....
EXCEPTION
...
END;
注: A) FOR EACH ROW 代表行级触发器.
B) WHEN: 只有符合该条件的时候才进行触发.
C) 可以通过INSERTING,DELETING,UPDATING来识别INSERT,DELETE,UPDATE操作.
D) 用:new 和:old(称为伪记录)来访问数据变更前后的值。
:NEW :INSERT,UPDATE之后的数据.
:OLD :DELETE,UDPATE之前的数据.
:old.字段名或:new.字段名
E) 触发器中的操作与触发事件(INSERT,UPDATE,DELETE)一起进行COMMIT和ROLLBACK;
REM 创建包含插入、删除、修改多种触发事件的触发器DML_LOG,对EMP表的操作进行记录。