探索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触发器,我们一定要认真了解其各类型的定义和用法,从而更好的掌握它们,并充分利用其他。


数据运维技术 » 探索Oracle触发器的多种类型(oracle触发器类型)