Oracle触发器:不同类型的特性与应用(oracle触发器类型)
Oracle触发器是Oracle数据库的一种特殊程序,可以在指定的数据库操作发生时执行某种任务,通常是改变某种数据库状态的动作。Oracle触发器的代表性用途有:为表添加操作日志记录;在一条特定记录被插入、修改或删除时自动对另一张表发生对应操作;在某事件发生时把消息发送给指定用户。
Oracle触发器可以分为三种类型:
(1)行级触发器:行级触发器在某行上的特定操作发生时被激发。比如在更新某行时,行级触发器就可以被激发,执行一定的操作。行级触发器不允许访问修改操作时受影响的行。
例如:
CREATE OR REPLACE TRIGGER salary_update
AFTER UPDATE OF salary ON emp
FOR EACH ROW
BEGIN
INSERT INTO salary_update_log (
emp_no,
old_salary,
new_salary
)
VALUES (
:old.emp_no,
:old.salary,
:new.salary
);
END;
(2)表级触发器:表级触发器在某表上的特定操作发生时被激发,它不关心操作发生在哪一行。当一些特定的记录发生变化时,表级触发器可以被激发,从而对这些记录进行一些处理。
例如:
CREATE OR REPLACE TRIGGER table_update
AFTER UPDATE ON emp
BEGIN
— Log update operations
INSERT INTO table_update_log
VALUES (USER, SYSDATE);
END;
(3)时间级触发器:时间级触发器可以按指定的时间计划被激发,它可以每天、每周或每月被激发。
例如:
CREATE OR REPLACE TRIGGER time_trigger
AFTER START ON DATABASE
BEGIN
— perform database maintenance
EXECUTE maintenance_job;
END;
Oracle触发器有许多用处,各种不同类型的触发器都有不同的特性,每种类型有不同的用途,可以根据数据库要求合理地使用这些功能来实现不同的目标。