2013-11-26 41 views
0

我在数据库表Foo上有一个AFTER UPDATE触发器。 它在Foo发生UPDATE时将审计记录插入到审计表中。为什么AFTER UPDATE只触发一次触发器,即使有困难也有3个UPDATE在行上?

有3个独立的服务运行,有时他们更新相同的Foo记录 - 但不同的领域。

问题是当SAME行上有3个UPDATES时 - 这似乎几乎在同一时间发生 - 我可以看到只有一个AFTER UPDATE触发器被触发。我看到只有一个审计记录wheres我期望3.

任何意见,为什么会发生这种情况?

+0

所有三个更新都成功了吗? – Twinkles

+0

创建一个sql小提琴演示你的问题 – Moho

+0

你能告诉我们你是如何解决这个问题的?谢谢 – siva

回答

0

我能想到的原因如下:

  1. 一个After仅在触发SQL语句中指定的所有操作都已成功执行UPDATE触发器被触发。所有引用级联操作和约束检查也必须在触发器触发前成功。 [Quote]这可能是其他更新失败,你没有注意到。
  2. 如果UPDATE是长时间运行事务的一部分,其他更新可能正在等待第一个更新提交。
  3. 你的触发器有一个错误。

无论如何,你有没有看过SQL Server提供的审计功能?

相关问题