触发器(Trigger)是用户定义在关系表上一类由事件来驱动的特殊过程。比如当对表进行操作(insert、delete、update)时就会激活它的执行。
触发器类似于约束,但是比约束更灵活,可以实施比FOREIGN KEY约束、CHECK约束更为复杂的检查和操作,具有更精细和更强大的数据控制能力。
一、格式:
CREATE TRIGGER<触发器名>
| BEFORE | AFTER | <触发器事件> ON <表名>
FOR EACH ROW | STATEMENT
[WHEN <触发条件>]
<触发动作体>
注意:
1、表的拥有者即创建表的用户才可以在表上创建触发器,并且一个表只能创建一定数量的触发器。
2、触发器类型可以分为行级触发器和语句级触发器。
3、触发动作题可以是一个匿名PL/SQL过程块,也可以是对已创建存储过程的调用。
二、触发器要素
1、触发器的对象:表、视图、数据库等。
2、触发器的事件:是指引起表、视图以及数据库发生变化的事件,触发器对象不同,触发器事件也不同。针对表或视图的事件主要有insert、delete、update三种。
3、触发器的主体:由SQL语句以及过程话控制语句构成的、能够完成某种功能的程序块。
三、激活触发器
1、执行该表上的BEFORE触发器;
2、激活触发器的SQL语句;
3、执行该表上的AFTER触发器。
注意:对于同个表上的多个BEFORE或AFTER触发器,遵循“谁先创建谁先执行”的原则。
四、删除触发器
DROP TRIGGER <触发器名> ON <表名>;