深入了解Oracle触发器的不同类型(oracle触发器类型)
Oracle触发器是一种可以监视数据库表中的更改并执行响应动作的数据库对象。它们使用规则(例如,用户在插入新行时)在表上触发动作。
Oracle触发器可以根据它们在数据库表上监视的数据库操作而分类:
1)行级触发器:这是Oracle数据库中最常用的触发器类型。行级触发器对特定表的每一行执行操作,在该表上进行插入、更新或删除操作时被触发。行级触发器的 syntax 如下:
CREATE OR REPLACE TRIGGER trigger_name
BEFORE/AFTER [INSERT/UPDATE/DELETE] ON table_name
FOR EACH ROW
[DECLARE …]
BEGIN
…
END;
2)语句级触发器:这种触发器只作用于整个表,而不是单独行。该语句将作用于整个表,而不管数据库中增加、编辑或删除多少行。例如,若要确保一个表内只有10行,可以使用一个语句级触发器来删除第11行。如下:
CREATE OR REPLACE TRIGGER trigger_name
BEFORE/AFTER [INSERT/UPDATE/DELETE] ON table_name
[DECLARE …]
BEGIN
…
END;
3)合规级触发器:合规级触发器可以分为两种:(i) 对象级别触发器,(ii) 字段级触发器。它们在特定会话树成操作被执行时被触发,而不考虑表中是否更改过数据。它们可以根据它们接受或拒绝操作确定是否允许特定会话树成。如下:
CREATE OR REPLACE TRIGGER trigger_name
BEFORE/AFTER [INSERT/UPDATE/DELETE]
[OF column_name]
ON table_name
[REFERENCING OLD AS old_row_name NEW AS new_row_name]
[FOR EACH ROW]
[WHEN (condition)]
[DECLARE …]
BEGIN
…
END;
以上是关于Oracle触发器的三种基本类型,每种有其自己的应用场景。行级触发器是一个经典的实例,用于执行操作以保持表的完整性,而语句级触发器通常用于监测在特定表上发生的操作,以确定是否应采取适当的行动。最后,合规级触发器可以用于确保命令或查询是特定标准下执行,以避免出现错误。