Mik*_*ike 3 sql-server-2008 sql-server
我们有 2 个 SQL Server 2008 环境,其中包含一些针对包含业务逻辑的表的触发器
在 2 个环境中,我们可以看到触发器以不同的顺序触发(感谢触发器中的打印语句)
如何查看每个环境中的触发器触发顺序?我知道我可以sp_settriggerorder
用来设置它们,但我们想看看这两种环境有什么区别
sp_settriggerorder
只允许你设置第一个/最后一个,中间没有。SQL Server 将如何触发中间的(或全部,如果您还没有使用过)完全取决于 SQL Server,它甚至可能不是确定性的,并且不会存储下次触及表时如何触发它们任何地方。甚至文档也指出订单是“未定义的”......
如果触发器触发的顺序很重要,那么我强烈建议将它们整合起来,而不是一开始就拥有一堆单独的触发器。由于行为未定义,即使您观察到某一天触发器触发 a,b,c - 没有什么能阻止 SQL Server 在第二天触发它们 c,a,b。如果您曾经 sp_settriggerorder
设置过第一个/最后一个,您可以OBJECTPROPERTY
按照本答案中的说明手动查看那些。但是,如果您有超过三个,则无法预测您未标记为第一个或最后一个的顺序。
归档时间: |
|
查看次数: |
2503 次 |
最近记录: |