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新增的触发器类型,它能为触发器操作前,先将值传给一个指定的变量,用于计算给触发器做判断。