有谁知道SQL Server如何确定执行顺序触发器(相同类型,即触发器之前).有没有办法改变这一点,以便我可以指定我想要的顺序.如果没有,为什么不呢.
谢谢.
使用SetTriggerOrder很好,但如果您的代码依赖于特定的执行顺序,为什么不将所有触发器包装到存储过程中,并让第一个调用第二个,第二个调用第三个,等等.
然后你只需要在触发器中执行第一个.
将来有人会感激他们不必在系统表中挖掘来确定自定义执行顺序.
您可以使用sp_settriggerorder来定义表上每个触发器的顺序.
但是,我认为你只需要一个可以完成多项任务的触发器就会好得多.如果订单很重要,则尤其如此,因为如果您有多个触发器,那么重要性将不会非常明显.想象一下有人试图在数月/数年内支持数据库.当然,有可能存在需要多个触发器的情况,或者它确实是更好的设计,但我开始假设您应该有一个并从那里开始工作.
如果你担心触发订单,那么你真的应该倒退一步,考虑你想要做什么,以及是否有更好的方法.这不是一件容易改变的事情应该告诉你一些事情.
触发器总是看起来像一个真正的整洁解决方案,并在正确的地方,它们是非常有价值的,但价格高,很容易与他们创建调试噩梦.过去我试图调试一些不起眼的数据库行为只是为了找到原因被忽略的触发器中丢失了几个小时.
sp_settriggerorder仅适用于AFTER触发器.