【问题标题】:SQL Server "after update" trigger firing before updateSQL Server“更新后”触发器在更新前触发
【发布时间】:2016-11-03 19:33:28
【问题描述】:

我有一个基于触发器的自动化工作流程。

在我的一张表上有一个“更新后”触发器,它有一个状态字段,一旦该字段从“正在处理”更新为“已完成”,触发器必须触发。在正常情况下,据我了解,触发器应在状态更新为“已完成”后触发。

但在我的情况下,触发器触发并导致潜在的死锁或错误,状态仍为“处理中”。

按照 MSDN “AFTER”指定只有在触发 SQL 语句中指定的所有操作都已成功执行时才触发触发器。

只有在更新提交到“已完成”状态后,我可以做些什么来触发触发器?

或者这是否意味着“更新后”只是作为事务开始的东西,然后一旦触发器成功触发,状态就被提交了?

【问题讨论】:

  • 必须有其他东西在更新该表。您是否将插入和删除的值存储在某处?这将指向您提前触发触发器的原因。 -- 此外,您可以检查对已完成状态的更改,并基于此中止或继续触发器。
  • “更新后”还是在提交之前。
  • 所以更新后触发器不会像 MSDN 中提到的那样工作?

标签: sql sql-server triggers


【解决方案1】:

一旦状态更新为“已完成”,“更新后”触发器就会触发,但数据尚未提交。它会等待触发器完成,如果触发器出错,它会回滚更新的数据。

【讨论】:

    猜你喜欢
    • 2015-01-20
    • 2014-10-23
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 2017-07-22
    • 1970-01-01
    相关资源
    最近更新 更多