探索Oracle触发器的多种类型(oracle触发器类型)
Oracle触发器是指Oracle数据库在某些特定事件发生时触发的一段自动执行的SQL语句,可以实现某些操作的自动化。Oracle触发器的类型有很多,下面将对其多种类型进行简要介绍,希望能够帮助大家更深入的了解Oracle触发器。
首先Oracle触发器可分为五种类型,分别是表触发器、行触发器、约束触发器、初始化触发器和编译触发器。
表触发器是常用的触发器类型,当INSERT、UPDATE和DELETE等DML操作发生时会触发表触发器,不管更新哪一行或多行,表触发器都会被触发执行,如下代码:
CREATE OR REPLACE TRIGGER trig_table1
BEFORE INSERT OR UPDATE OR DELETE
ON table1
FOR EACH ROW
BEGIN
–这里是触发器要执行的语句
END;
行触发器是跟表触发器相似的触发器类型,也是在DML操作时被触发,但是和表触发器不一样的是,行触发器只会被触发去执行更新了的每行,例如:
CREATE OR REPLACE TRIGGER trig_table2
AFTER INSERT OR UPDATE OR DELETE
ON table2
FOR EACH ROW
BEGIN
— 此处是触发器要执行的语句
END;
约束触发器在数据库设计阶段就可以被调用,用来支持数据库表中约束完整性的一种特殊触发器,当发生破坏了约束的操作时,它可以自动的拦截这种操作,例如:
CREATE OR REPLACE TRIGGER trig_table3
BEFORE INSERT OR UPDATE OR DELETE
ON table3
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
WHEN (new.column1 old.column1)
BEGIN
–这里是触发器要执行的语句
END;
初始化触发器可以在某些特定的时刻自动被触发,例如在数据库启动时、用户登陆之前或者每天按指定时间间隔触发,以实现某些定时任务,如:
CREATE OR REPLACE TRIGGER trig_user_init
AFTER LOGON ON USER_LOGIN
BEGIN
–这里是触发器要执行的语句
END;
最后,编译触发器可以在每次调用过程的开始和结束的时候触发,以实现监控调用程序执行信息的管理,如:
CREATE OR REPLACE TRIGGER trig_procedure_call_log
BEFORE OR AFTER CALL
FROM
BEGIN
–这里是触发器要执行的语句
END;
以上就是关于Oracle触发器的多种类型。为了更好的利用Oracle触发器,我们一定要认真了解其各类型的定义和用法,从而更好的掌握它们,并充分利用其他。