0

我在 db 表 Foo 上有一个 AFTER UPDATE 触发器。每当 Foo 上发生 UPDATE 时,它都会将审计记录插入到审计表中。

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

问题是当同一行上有 3 个更新时 - 这似乎几乎同时发生 - 我可以看到只有一个 AFTER UPDATE 触发器被触发。我只看到一个审计记录,而我预计是 3 个。

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

4

1 回答 1

0

我能想到这些原因:

  1. 仅当触发 SQL 语句中指定的所有操作都已成功执行时,才会触发 AFTER UPDATE 触发器。在触发此触发器之前,所有引用级联操作和约束检查也必须成功。[引用]可能是其他更新在您不注意的情况下失败。
  2. 如果 UPDATE 是长时间运行事务的一部分,则其他更新可能正在等待第一个更新提交。
  3. 您的触发器中有错误。

无论如何,您是否了解过 SQL Server 开箱即用的审计功能?

于 2013-11-26T13:06:05.973 回答