您的位置:首页 > 其它

触发器(四、执行顺序控制)

2018-02-24 16:23 204 查看
Oracle11g开始提供了一个触发器顺序控制的功能,对于同时触发的多个触发器,可以用FOLLOWS语句来控制先后执行顺序。
但是FOLLOWS语法有一定的限制:只能用在同类型的多个触发器上
(before、after要一样;update、insert、delete要一样;行级、语句级要一样)
否则会报错ORA-25022: cannot reference a trigger of a different type




既然同一类型才能控制,绝大部分场景是不需要分2个触发器的,直接在触发器内部对语句按序执行就可以了。
我在开发过程中也没有遇到非要使用follows的应用场景,但作为一个功能,记录一下,说不定以后会碰到。
在表T_OBJECTS上加2个before update of触发器,分别对OBJECT_NAME和LAST_DDL_TIME列的update操作进行触发。



执行一个update语句,同时修改OBJECT_NAME和LAST_DDL_TIME列



发现最终结果是TRIGGER1的操作结果,说明先执行了TRIGGER2,再执行TRIGGER1。
修改一下触发顺序,让TRIGGER2在TRIGGER1之后执行:



再重新执行刚才的update语句看下结果



果然保留下来了trigger2的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: