深入了解Oracle的触发器类型(oracle触发器类型)
Oracle 的触发器类型是Oracle 数据库中常见的一种数据库对象,它是Oracle 数据库反应数据库操作变更的一种机制,可以在任何时间任何条件执行定义在其中的一段代码,实现自动执行。本文将讨论Oracle中的触发器类型,了解Oracle中触发器的支持类型以及用法,以加深大家对Oracle中触发器的了解。
Oracle的触发器支持在表中,视图中,和存储过程中定义,并在各个数据库操作被执行后执行,他们可以从其他表收集信息,并作出响应,还可以做一些在引入 PL/SQL 以前难以实现的事情,还可以用来作数据完整性检查等。Oracle支持三种不同的触发器类型:
* **表型触发器(Table-level Trigger)。** 表型触发器定义在表上,它们可以在 DML 操作(INSERT、UPDATE、DELETE)之前或之后触发,并按照语句类型的不同做出不同的反应。
例如:一个表型触发器,当表 T1 上的某个列有更新操作时执行:
“`SQL
CREATE OR REPLACE TRIGGER trig_t1_after_update
AFTER UPDATE OF sal
ON T1
FOR EACH ROW
BEGIN
INSERT INTO audit_log values (‘T1’, USER, SYSDATE);
END;
/
* **序列型触发器(Statement-level Trigger)**。 序列型触发器定义在表上,它们可以在 DML 操作(INSERT、UPDATE、DELETE)之前或者之后触发,但只触发一次,即使有多行被 DML 操作。
例如:一个序列型触发,当表 T1 上的某个列有更新操作时执行:
```SQL CREATE OR REPLACE TRIGGER trig_t1_before_update
BEFORE UPDATE ON T1
FOR EACH STATEMENT BEGIN
INSERT INTO audit_log values ('T1', USER, SYSDATE); END;
/
* **系统触发器(System Trigger)**。 系统触发器定义在数据字典中,它们引发系统事件,只有当特定条件满足时才会触发。
例如:
“`SQL
CREATE OR REPLACE TRIGGER audit_log_trigger
AFTER LOGON
ON DATABASE
BEGIN
INSERT INTO audit_log VALUES (‘LOGON’, USER, SYSDATE);
END;
/
Oracle 中的触发器可以非常方便的帮助我们自动的响应数据库操作的变更,而上面列举的三种类型的触发器能够更好的帮助我们实现一些复杂的一致性保证。