深入认识Oracle触发器的分类类型(oracle触发器类型)
Oracle 触发器 (trigger)是数据库中强大的一种程序控制机 制,通过它可以自动执行一些操作, 平时比较常见的就是实现自动检查数据备 份、删除日志文件和创建单据号码等相 关操作。 另外,Oracle触发器也可以在某一特定的 时间或者特定的事件发生时,做出对对 应的动作。不仅如此,通过触发器,还可 以改变表中数据的一些规则,从而达到实 现数据完整性和约束性的目的。
Oracle触发器可以分为4类,它们是行触 发器、表触发器、DML触发器和系统触发 器。
行触发器是比较常用的一种类型,当某一 行被插入或者更新时,它就会被触发。此外 也可以根据设定的选项,在某一行被删除 时执行操作。一般来说,它应该分为三类: 插入时触发器、替换时触发器和删除时触 发器,具体示例如下:
–增加插入时触发器
CREATE OR REPLACE TRIGGER “SCHEMA”.”INSERT_TRIGGER”
AFTER INSERT ON TABLE_NAME
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE(‘A row is inserted.’);
END;
–增加替换触发器
CREATE OR REPLACE TRIGGER “SCHEMA”.”UPDATE_TRIGGER”
BEFORE UPDATE ON TABLE_NAME
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE(‘A row is updated.’);
END;
–增加删除时触发器
CREATE OR REPLACE TRIGGER “SCHEMA”.”DELETE_TRIGGER”
BEFORE DELETE ON TABLE_NAME
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE(‘A row is deleted.’);
END;
表触发器是行触发器的变种,当表整体进行 插入、更新或删除操作时,它就会被触发。 由于行触发器不能完整执行某一特定的操作, 这时就可以使用表触发器来执行相关操作。具 体示例如下:
–表触发器的创建
CREATE OR REPLACE TRIGGER “SCHEMA”.”TABLE_TRIGGER”
AFTER INSERT OR UPDATE OR DELETE ON TABLE_NAME
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE(‘Table is changed.’);
END;
DML触发器是在用户对数据做插入、更新或 删除操作时来触发某些操作。它们分为三种: BEFORE DML触发器,AFTER DML触发器和INSTEAD OF DML触发器,具体示例如下:
–BEFORE 触发器的创建
CREATE OR REPLACE TRIGGER “SCHEMA”.”BEFORE_TRIGGER”
BEFORE INSERT OR UPDATE OR DELETE ON TABLE_NAME
Begin
DBMS_OUTPUT.PUT_LINE(‘DML operator starts.’);
END;
–AFTER 触发器的创建
CREATE OR REPLACE TRIGGER “SCHEMA”.”AFTER_TRIGGER”
AFTER INSERT OR UPDATE OR DELETE ON TABLE_NAME
Begin
DBMS_OUTPUT.PUT_LINE(‘DML operator finished.’);
END;
–INSTEAD OF 触发器的创建
CREATE OR REPLACE TRIGGER “SCHEMA”.”INSTEAD_OF_TRIGGER”
INSTEAD OF INSERT OR UPDATE OR DELETE ON TABLE_NAME
Begin
DBMS_OUTPUT.PUT_LINE(‘Different DML operator.’);
END;
最后一类触发器就是系统触发器,它是数据 库系统自身定义的触发器,系统比较内部 化,开发者并不能改变其属性,但可以采 用定时器,将系统触发器的操作时间定义为 用户所想要的特定的定时点,可以用 system_trigger 关键字来实现,具体示例如下:
–系统触发器的创建
CREATE OR REPLACE TRIGGER “SCHEMA”.”SYSTEM_TRIGGER”
SYSTEM_TRIGGER
AFTER SCHEDULE ‘5 AM 1 MONTH 7 DAY,5 PM’
DO
BEGIN
DBMS_OUTPUT.PUT_LINE(‘5 AM 1 MONTH 7 DAY,5 PM’);
END;
通过以上4类Oracle触发器,开发者可以通过执 行指定的操作以达到一定的目的,如实现数 据库完