【问题标题】:Will an INSTEAD OF trigger always fire before an AFTER trigger on the same table in SQL Server?INSTEAD OF 触发器是否总是在 SQL Server 中同一个表上的 AFTER 触发器之前触发?
【发布时间】:2016-04-18 19:38:00
【问题描述】:

如果我在 SQL Server 中的同一个表上有一个 INSTEAD OF UPDATE 触发器和一个 AFTER UPDATE 触发器,那么它们的执行顺序是否保证是 INSTEAD OF 先到后继?

如果是这样,AFTER触发器中插入的表是否总是看到INSTEAD OF触发器的结果?

我的具体用例是 INSTEAD OF UPDATE 触发器正在更新计算列的等效功能,而 AFTER UPDATE 触发器具有使用该计算列的逻辑。

【问题讨论】:

  • 您是否将两个触发器都放在一个表上并尝试过?结果如何?
  • 如果您的而不是触发器的功能类似于计算列,为什么还需要触发器?你可以使用计算列吗?由于您关心触发器的顺序,您应该看看这篇文章。它解释了如何管理以及何时代替触发器触发。 msdn.microsoft.com/en-us/library/ms189568.aspx
  • @SeanLange:计算列会给我们带来一些性能问题,即使是 PERSISTED。该选择超出了问题的范围。
  • 我看不到代替触发器的性能会更好,但这是您的决定。

标签: sql-server triggers sql-server-2012


【解决方案1】:

来自在线书籍:

AFTER 触发器在触发操作(INSERT、UPDATE 或 DELETE)、INSTEAD OF 触发器和约束被处理。

【讨论】:

  • 谢谢,我的 Google-fu 让我失望了。对于其他人,这里是源链接:technet.microsoft.com/en-us/library/…
  • 我不明白报价中的任何内容之前或之后。代替,你会说INSTEAD OF triggers fire in place of the triggering action and before constraints are processed.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2017-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多