深入了解Oracle触发器的类型(oracle触发器类型)
Oracle触发器是一种程序单元,可以定义某事件发生后,自动执行某些操作,充当与封装层代码和程序模块之间的接口,使应用系统与数据库解耦,更适合数据库处理程序。Oracle触发器一般分为三类:行级触发器、表级触发器和系统级触发器。
行级触发器是最常用的触发器类型,它有两种:BEFORE触发器以及AFTER触发器。它们可以在INSERT,UPDATE或DELETE某行数据时触发,即触发前或者触发后执行一段 PL/SQL脚本来实现,一般常用BEFORE触发器,用来实现某一行数据操作前的参数检查、数据收集和记录日志等功能。它要求代码必须与触发作用表有关,可以使用INSERTED或DELETED表。如:
-- 创建行级BEFORE触发器
CREATE trigger tr_customers_ins_bef before insert on customers
for each row declare
begin :new.MEMBER_DATE := sysdate;
end;/
表级触发器可以在表上写入数据、删除数据和更新数据时触发,它不要求与触发表有关。它包括INSTEAD OF触发器和AFTER 触发器,INSTEAD OF 触发器覆盖其他触发器,而后者会根据它们的顺序与之组合。如:
-- 创建表级AFTER触发器
CREATE trigger tr_customers_ins_aft after insert on customers
for each row begin
INSERT INTO change_customers VALUES (:new., sysdate); end;
/
系统级触发器是在数据字典中注册的,它可以在登录、数据完整性和资源调度等方面实现功能,可以为表空间、对象、用户触发器。如:
CREATE trigger sys_before_logon
before logon on database
begin insert into log values ('User log on to database');
end;/
总而言之,Oracle触发器类型多样,根据不同的用途可以选择不同的触发器来实现相应的功能,这样可以实现更多的数据库处理,提高程序的执行效率。