为什么AFTER UPDATE触发器仅在ONCE上被触发,即使ROW上有3个UPDATES?

时间:2013-11-26 12:41:54

标签: sql sql-server-2008 triggers audit-logging

我在db表Foo上有一个AFTER UPDATE触发器。 只要在Foo上发生UPDATE,它就会将审计记录存入Audit表。

有3个单独的服务正在运行,有时它们会更新相同的Foo记录 - 但不同的字段。

问题是当SAME行上有3个UPDATES时 - 几乎同时发生 - 我可以看到只触发一个AFTER UPDATE触发器。我只看到一个审计记录,我期待3。

任何建议为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

我可以想到这些原因:

  1. 仅当触发SQL语句中指定的所有操作都已成功执行时,才会触发AFTER UPDATE触发器。在此触发器触发之前,所有参考级联操作和约束检查也必须成功。 [Quote]如果没有您注意到,其他更新可能会失败。
  2. 如果UPDATE是长时间运行的事务的一部分,则其他更新可能正在等待第一个更新提交。
  3. 您的触发器中存在错误。
  4. 无论如何,您是否已经了解了SQL Server提供的审计功能?