触发器

来源:互联网 发布:刺客信条战斗力知乎 编辑:程序博客网 时间:2024/06/07 11:00

触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。

触发器保存在数据库服务器中任何用户对表的增、删、改操作均由服务器自动激活相应的触发器触发器可以实施更为复杂的检查和操作,具有更精细和更强大的数据控制能力 

触发器又叫做事件-条件-动作(event-condition-action)规则
当特定的系统事件发生时,对规则的条件进行检查,如果条件成立则执
行规则中的动作,否则不执行该动作。规则中的动作体可以很复杂,通
常是一段SQL存储过程。

触发器类型
行级触发器(FOR EACH ROW)
语句级触发器(FOR EACH STATEMENT)

触发条件
触发器被激活时,只有当触发条件为真时触发动作体才执行;否则触发动作体不执行。
如果省略WHEN触发条件,则触发动作体在触发器激活后立即执行

触发动作体
触发动作体可以是一个匿名PL/SQL过程块,也可以是对已创建存储过程的调用。

如果是行级触发器,用户都可以在过程体中使用NEW和OLD引用事件之后的新值和事件之前的旧值。

如果是语句级触发器,则不能在触发动作体中使用NEW或OLD进行引用。

如果触发动作体执行失败,激活触发器的事件就会终止执行,触发器的目标表或触发器可能影响的其他对象不发生任何变化 

触发器的执行,是由触发事件激活的,并由数据库服务器自动执行
一个数据表上可能定义了多个触发器,遵循如下的执行顺序:
(1) 执行该表上的BEFORE触发器;
(2) 激活触发器的SQL语句;
(3) 执行该表上的AFTER触发器。

before 就是在insert或update之前执行触发器 
after 就是在insert或update之后执行触发器 

0 0