探索Oracle中的触发器类型(oracle触发器类型)
探索 Oracle 中的触发器类型
在 Oracle 中,有几种不同类型的触发器,它们允许程序员定义关联到数据库表或者视图的时间机制。触发器在某些特定的数据库事件发生时可以自动执行,根据业务需要,可以编写PL/SQL程序触发器,或者其他的执行代码来处理一些特殊的业务逻辑。
在Oracle中有三种基本的触发器类型,分别是行触发器、语句触发器和之前特定的触发器。
1. 行触发器
行触发器是最常用的一种触发器,它表示在某个表中一行记录被插入、更新或删除动作执行时发生。
行触发器可以是简单的完整性约束[CONSTRAINT]触发器,也可以是完整性触发器,用于在多表更新事务中,验证数据的完整性,没有行触发器时,如果多表更新不受控制会引起数据完整性问题,行触发器可以避免这种情况
举个例子:
CREATE OR REPLACE TRIGGER trg_bef_insert
BEFORE INSERT ON scott.person
FOR EACH ROW
BEGIN
— do somethings
END;
2. 语句触发器
语句触发器在一个数据库操作,即一个数据库语句被执行后发生,它不检查是受影响的行,而是检查一个数据库语句的作用,可以在某些特定的时刻触发,如DML操作或DDL操作,而且可以对所有的表进行统一反应。
例如,下面的触发器将在执行数据库语句update、insert、delete、merge时被触发,然后执行PL/SQL程序:
CREATE OR REPLACE TRIGGER trg_stmt_dml AFTER
UPDATE OR INSERT OR DELETE OR MERGE
ON scott.person
BEGIN
— do somethings
END;
3. 前特定的触发器
之前特定的触发器是Oracle在11g中引入的一种新的触发器类型。和行触发器不同,它可以对一个数据库事务中多个行及触发操作进行统一反应,可以把多个繁琐的行触发器合并成一个简单易用的之前特定的触发器。
例如,下面的触发器在一个事务中Update和Insert所有行时,一次只触发一次:
CREATE OR REPLACE TRIGGER trg_bef_all_dml
BEFORE UPDATE OR INSERT ON scott.person
FOR EACH ROW
BEGIN
— do somethings
END;
总的来说,Oracle触发器有三种不同的类型:行触发器、语句触发器、之前特定的触发器。它们是用来在特定的时刻自动执行动作的有用的功能,可以根据业务的要求,使用合适的触发器来实现特定的业务逻辑。