Oracle触发器的4种类型及其应用(oracle触发器类型)

Oracle触发器通常是一种SON类型数据库技术,它被用作一项扩展的数据库维护技术来确保所需的自动处理步骤被正确地完成。Oracle触发器可以检测表中数据的变化向并对其做出响应,也可以当作日期/时间或事件来使用。Oracle触发器可以根据用户指定的类型自动执行,不需要人工介入来触发执行。Oracle触发器在Oracle数据库中有四种类型,分别为 statement level 触发器、row level 触发器、compound 触发器和 INSTEAD OF 触发器,下面将分别介绍它们的应用场景。

Statement level 触发器应用于当数据库模式发生变化时引起的表的操作,如 INSERT、UPDATE 或 DELETE。它会在一条sql语句执行完成后立即被触发, 这种触发器在 PL/SQL代码中仅能引用 NEW 和 OLD 来指代发生变化的行 。

CREATE OR REPLACE TRIGGER tr_students

AFTER INSERT OR UPDATE OR DELETE ON students

FOR EACH ROW

BEGIN

— PL/SQL code

END;

Row level 触发器会在每次 Insert、update 或 delete 发生时被触发,在触发前它会先对NEW 和 OLD作出有力的定义,用户可以在约束或内置函数中使用它们。

CREATE OR REPLACE TRIGGER tr_results

BEFORE INSERT OR UPDATE OR DELETE ON results

FOR EACH ROW

BEGIN

— PL/SQL code

END;

Compound 触发器由包含一组 SQL 语句的 WHEN 子句组成,每个 WHEN 子句单独处理一个单一的 SQL 语句。当满足在 WHEN 子句中定义的某个或某些条件时,它可以快速处理多个 SQL 语句和处理步骤。

CREATE OR REPLACE TRIGGER tr_manager

BEFORE INSERT OR UPDATE OR DELETE OF birth_date, address

ON manager

FOR EACH ROW

WHEN (NEW.address IS NULL OR NEW.address OLD.


数据运维技术 » Oracle触发器的4种类型及其应用(oracle触发器类型)