触发器(四、执行顺序控制)
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的数据
但是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的数据
相关文章推荐
- Oracle EBS中有关Form的触发器的执行顺序
- oracle form 触发器执行顺序
- 命令执行顺序控制与管道
- linux常用命令(六)命令执行顺序控制与管道
- linux shell命令执行顺序的控制方法
- java 中线程执行顺序控制
- 如何控制线程执行的顺序?
- Oracle EBS中有关Form的触发器的执行顺序
- Linux:命令执行顺序控制与管道
- (大数据工程师学习路径)第一步 Linux 基础入门----命令执行顺序控制与管道
- java中控制线程间执行顺序的方法
- Oracle Form 触发器执行顺序
- Servlet 3.0 之@WebFilter怎么控制多个filter的执行顺序
- Linux学习10:命令执行顺序控制与管道
- 利用sp_settriggerorder设置触发器执行顺序
- Forms开发中触发器的执行顺序
- OC中多线程执行顺序的控制
- Oracle Forn触发器执行顺序
- python unittest控制用例的执行顺序
- oracle form 触发器执行顺序