深入认识 Oracle 触发器类型(oracle触发器类型)

Oracle 触发器主要有四种类型,关联型触发器,行触发器,更新摘要统计值触发器与限制性触发器,它们分别针对某一数据库操作发出的通知,准备好它们将要做的事情,然而每一种触发器类型之间却是有落差的。

比如,关联型触发器是当数据库操作更改数据表中的至少一行,发出更新操作时,它会搜寻自己配置的指定数据表中的指定数据行,如果表中有匹配的值,触发器就会生效,例如:

CREATE OR REPLACE TRIGGER 关联型触发器

BEFORE

UPDATE ON persons

FOR EACH ROW

BEGIN

IF :NEW.salary > 15000 THEN

:NEW.bonus := :NEW.salary * 0.1;

ELSE

:NEW.bonus := 0;

END IF;

END;

以上代码是创建一个名叫“关联型触发器”的触发器,当这个触发器生效时,它会根据薪水大于 15000 的用户记录,赋予它一定的 bonus。

而行触发器在每一行操作发生后生效,它会运行在整个操作结束之前,例如:

CREATE OR REPLACE TRIGGER 行触发器

AFTER

UPDATE ON persons

FOR EACH ROW

BEGIN

INSERT INTO history_table (name, salary, bonus)

VALUES (:OLD.name, :OLD.salary, :OLD.bonus);

END;

以上代码是创建一个名叫“行触发器”的触发器,当这个触发器生效后,它会在每一行操作之后,将以前的用户记录插入一个历史表,这样一来可以作为后期的查阅用。

另外,更新摘要统计值触发器会在应用进行 INSERT、DELETE、UPDATE 时引起更改,它会针对指定的列进行统计,比如:

CREATE OR REPLACE TRIGGER 统计值触发器

AFTER

INSERT OR DELETE OR UPDATE ON persons

FOR EACH ROW

BEGIN

UPDATE total_payments

SET total = total + :NEW.salary – :OLD.salary;

END;

以上代码是创建一个名叫“统计值触发器”的触发器,当这个触发器生效时,它会查询现有用户记录的 salary 列,并进行统计,以便于后续了解平均工资。

不过,Oracle 还有一种特殊的限制性触发器,它的作用是限制数据表的更新和插入,例如:

CREATE OR REPLACE TRIGGER 限制性触发器

BEFORE INSERT ON persons

FOR EACH ROW

BEGIN

IF (:NEW.name IS NULL) THEN

RAISE_APPLICATION_ERROR(-20001, ‘Name cannot be empty.’);

END IF;

END;

以上代码是创建一个名叫“限制性触发器”的触发器,当用户尝试插入一个字段为空的行时,会给出错误信息提示。

通过对它们的不同,我们可以知道 Oracle 触发器的多种类型,每一种触发器类型都有自己不同的使用方式,因此若要深入了解 Oracle 触发器,我们要仔细分析它们的应用场景,确定正确的触发器类型,才能有效的操作数据库。


数据运维技术 » 深入认识 Oracle 触发器类型(oracle触发器类型)