触发器执行顺序
问题描述:
我对触发器执行顺序有疑问。
来解释它,我将用一个例子:
我已经上表myTable的触发,因此,这个触发器中有上myTable的的更新,这引发同一触发的另一个实例(我会打电话一审“一个”这个新的实例“乙”),现在的问题是:
将实例乙在asyncronous的方式开始和实例一个继续执行,或将成为实例B已启动且实例A将等待B完成?触发器执行顺序
我希望我解释自己
对不起,我的英文不好
答
我会感到非常惊讶,如果内触发(B)不会阻止外部触发(A)。 原因是Determinism - 如果B异步运行,它可能会在A之后的或之前完成,并且如果它们都尝试更新同一个字段,则无法保证最终结果是什么。
即使B异步运行,触发它的语句只会在后返回所有触发器都已完成。这是由于DBMS的原理Atomic和Consistent。
还有就是你可以用它来确定一个触发能否掀起另一触发设置:Nested Triggers
你为什么要这样对自己?应谨慎使用触发器:它们对事物有微妙但可能深刻的影响,我想不出一个很好的理由让触发器更新将重新调用触发器的表。 – jleach
这只是一个关于触发器执行的好奇心,但是已经创建的工作也有类似的情况 – davidinho