触发器
定义
Trigger是与tbale,view,schema或者databse相关的plsql程序块或过程,当特定事件发生时自动触发执行。
分类
触发器主要有两种类型:
应用trigger:由特定的应用程序的事件触发
数据库trigger:由数据库的特定事件触发
设计Trigger触发器的基本指导
首先,使用触发器可以执行一些相关动作,这些相关动作是集中的全局操作
其次,使用trigger应避免和数据库已有功能重复,或者和其他触发器重复
再其次,触发器可以调用plsql过程
最后,过度使用触发器会导致大型应用系统代码难以维护
创建DML触发的triggers
触发时机
触发时机有3个:
BEFORE:DML动作发生之前触发
AFTER:DML动作发生之后触发
INSTEAD OF:替换原有动作,比如一些不可更新的视图
单行受影响的情况
假设DML语句
INSERT INTO departments
(department_id, department_name, location_id)
VALUES(400, 'CONSULTING', 2400);
s_line.JPG
多行受影响的情况
UPDATE employees
SET salary = salary * 1.1
WHERE department_id = 30;
m_line.JPG
语法
CREATE [OR REPLACE ] TRIGGER trigger_name
timing
event1 [OR event2 OR event3]
ON object_name
[[REFERENCING OLD AS old | NEW AS new]
FOR EACH ROW
[WHEN (condition)]]
trigger_body
触发顺序
注意,如果一个事件触发多个触发器,则这个触发的先后顺序是随机的。
触发事件和trigger body
触