深入了解 Oracle 触发器类型(oracle触发器类型)
Oracle触发器类型是由Oracle数据库服务提供的一种事件触发式的数据库方法,用于当指定的行或表发生特定的更改时执行动作。 Oracle服务器支持三种类型的触发器:行级触发器、表级触发器和钩子触发器。
行级触发器是Oracle服务器中最常见的触发器,它在被执行的行触发器时被触发。行级触发器仅当指定的行发生更改时执行指定的动作。它的实现形式为:
BEFORE OR AFTER
INSERT OR UPDATE OR DELETE
ON 表名
FOR EACH ROW
触发器体
例如:
CREATE OR REPLACE TRIGGER trig_person_name
BEFORE INSERT OR UPDATE OR DELETE
ON Person
FOR EACH ROW
BEGIN
IF INSERTING THEN
— 插入逻辑
ELSIF UPDATING THEN
— 更新逻辑
ELSIF DELETING THEN
— 删除逻辑
END IF;
END;
表级触发器叫做表级触发器,它在整个表触发时被触发。表级触发器是最不常用的触发器,它仅在表中的行发生INSERT、UPDATE或DELETE语句时才会触发,与行级触发器不同,表级触发器只处理它作用的表中的所有行。它的实现形式为:
BEFORE OR AFTER
INSERT OR UPDATE OR DELETE
ON 表名
BEGIN
— 触发器体
END;
例如:
CREATE OR REPLACE TRIGGER trig_table_person
BEFORE INSERT OR UPDATE OR DELETE
ON Person
BEGIN
IF INSERTING THEN
— 插入逻辑
ELSIF UPDATING THEN
— 更新逻辑
ELSIF DELETING THEN
— 删除逻辑
END IF;
END;
最后还有钩子触发器,它位于行级和表级触发器之间,它简单地通知Oracle服务器在表触发时做什么,而不需要指定特定的行。它的主要目的是在表触发时激发系统安全检查。它的实现形式为:
CREATE OR REPLACE TRIGGER trig_hook
INSTEAD OF
INSERT OR UPDATE OR DELETE
ON 表名
BEGIN
— 触发器体
END;
我们可以利用以上三种触发器类型来创建复杂的数据库触发器以完成一些特定的任务。这些触发器可以极大地提高数据库的自动化处理。