深入了解 Oracle 触发器类型(oracle触发器类型)
Oracle 作为业界领先的数据库管理系统,它不仅提供了强大的功能,而且将非常有用的Oracle触发器添加到众多层次的数据库开发中,从而使企业受益匪浅。Oracle触发器是一个能够自动执行一系列操作来响应表上的施加及其更新、插入和删除操作的对象,其中最常用的是 DML 触发器,这种触发器有助于响应 DML 操作,例如插入、更新和删除语句,并修改表的行。
Oracle触发器类型主要分为三类:Row Level Trigger(每行触发器)、Statement Level Trigger(句子级触发器)和 System Trigger(系统触发器)。
* Row Level Trigger: 每行触发器会响应 DML 语句的每一行。它在 DML 语句对表中的每一行触发,作用于行级别。它以声明式编写,可用于处理执行 DML 时发生的操作。
例如:
CREATE OR REPLACE TRIGGER trg_rowlevel
BEFORE UPDATE OF salary ON employees FOR EACH ROW
BEGIN update employees
SET sum_sal = :NEW.salary + :OLD.salary;END;
* Statement Level Trigger: 在每个 DML 语句执行触发一次,无论 DML 语句的行数有多少,都只触发一次,作用于句子级别。它以声明式编写,用于处理执行 DML 语句时发生的操作。
例如:
CREATE OR REPLACE TRIGGER trg_stmt
BEFORE UPDATE ON employeesBEGIN
update emp_sum SET amount =
amount + (SELECT sum(salary) FROM employees); END;
* System Trigger:系统触发器会在数据库或元数据级别触发,以响应数据库实例或数据库对象上发生的更改,这些更改可能发生在数据库层次、数据库实例层次或数据库对象(例如表)层次上。它以存储过程的形式编写,用于处理数据库实例或数据库对象上发生的事件及其前后的操作。
例如:
“`
CREATE OR REPLACE TRIGGER trg_sys
BEFORE STARTUP ON DATABASE
BEGIN
execute immediate ‘ALTER DATABASE OPEN READ ONLY’;
END;
总的来说,Oracle触发器的三类类型,可以使得开发者有更加准确的把握表上发生的变化,从而进一步丰富功能、提高数据库的安全性和可用性。