Oracle数据库中的触发器类型介绍(oracle触发器类型)

Oracle数据库中触发器是一种存储在数据库中的程序对象,通过它自动执行一系列动作。它能够检测用户对数据库中表或视图的更新活动,根据设置的条件去执行一组指令。Oracle的触发器类型主要包括以下三种:

一、行级触发器

行级触发器是Oracle数据库中最常用的触发器,也称作“Row-level Trigger”。它在某一行数据发生变化时发挥作用,如新增、更新或删除一行数据时,该触发器都会被触发,并使其执行指定的动作。

例如:创建一个行级触发器。

CREATE OR REPLACE TRIGGER testrow_trigger

AFTER INSERT OR UPDATE OR DELETE ON testrow

FOR EACH ROW

BEGIN

INSERT INTO test_log (field1,field2) VALUES(:new.field1,:old.field2);

END testrow_trigger;

二、表级触发器

表级触发器与行级触发器的区别在于,表级触发器是在一次更新操作针对一张表时,触发其中的指定操作。当一个表同时被更新多次时,表级触发器只会触发一次,最后一次操作完成后,表级触发器才会发生变化。

例如:创建一个表级触发器

CREATE OR REPLACE TRIGGER testtable_trigger

BEFORE INSERT OR UPDATE OR DELETE ON testtable

FOR EACH ROW

BEGIN

INSERT INTO test_log (field1,field2) VALUES(:new.field1,:old.field2);

END testtable_trigger;

三、标量触发器

标量触发器是Oracle 12c新增的触发器类型,允许在触发器操作前,先将值传给一个指定的变量,用于计算给触发器做判断。

例如:创建一个标量触发器

CREATE OR REPLACE TRIGGER testscalar_trigger

BEFORE UPDATE OF salary ON testscalar

FOR EACH ROW

DECLARE

tmp_salary number;

BEGIN

tmp_salary:= :old.salary – :new.salary;

IF tmp_salary >500 THEN

DBMS_OUTPUT.PUT_LINE(“工资幅度不允许调整超过500元”);

END IF;

END testscalar_trigger;

总结

Oracle数据库中的触发器类型为行级触发器、表级触发器、标量触发器。行级触发器是 Oracle 数据库中最常用的触发器,它在某一行数据发生变化时发挥作用;表级触发器是在一次更新操作针对一张表时触发的指定动作;标量触发器是12c新增的触发器类型,它能为触发器操作前,先将值传给一个指定的变量,用于计算给触发器做判断。


数据运维技术 » Oracle数据库中的触发器类型介绍(oracle触发器类型)