深入探究Oracle触发器的种类及应用(oracle触发器类型)

Oracle 触发器是一种数据库中非常有用的功能,经常用来处理修改表数据和维护完整性约束。它还能用来回复重要事件并记录日志,使用非常灵活,也能避免人为的错误。Oracle支持几种不同类型的触发器,它们的应用给开发人员提供了多种选择。

新的Oracle 12c 中提供了3种不同类型的触发器:Before触发器,After触发器和Instead of触发器。

Before 触发器是在其具体触发操作发生之前被触发,以更新或删除符合条件的行之前。它建立在表上,它将激发在每一行修改之前,以改变要更新或删除的行。Before触发器的语法如下所示:

create or replace trigger  
before insert or update or delete on
for each row
begin
-- trigger body
end;

after触发器的含义是,在将更改应用于表之后,在提交事务之前触发,因此将在表上的每行上单独触发。它可以在表中的每行更新完成后运行一段代码。after触发器的语法如下所示:

create or replace trigger  
after insert or update or delete on
for each row
begin
-- trigger body
end;

Instead of触发器是一种表触发器,允许你在视图中执行 DML 操作,它可以在控制这些操作并捕捉它们之前被触发。它是在实际应用于基表之前被触发,可以用来进行任何类型的更新,包括对基表数据的直接操作,而不会修改视图中的数据。Instead of触发器的语法如下所示:

create or replace trigger  
instead of insert or update or delete on
for each row
begin
--trigger body
end;

触发器的主要有用之处在于处理复杂的视图,它们可以替代多个脚本中的 SQL 语句。另外,它们也可以用来维护数据库完整性,限制用户访问,添加审计信息,执行算法等。总而言之,Oracle触发器可以用来执行各种各样的程序调用,从而大大增强数据库性能。


数据运维技术 » 深入探究Oracle触发器的种类及应用(oracle触发器类型)