我在db表Foo上有一个AFTER UPDATE触发器 . 只要在Foo上发生UPDATE,它就会将审计记录插入到Audit表中 .
有3个单独的服务正在运行,有时它们会更新相同的Foo记录 - 但不同的字段 .
问题是当SAME行上有3个UPDATES时 - 几乎同时发生这种情况 - 我可以看到只触发一个AFTER UPDATE触发器 . 我只看到一个审计记录,我期待3 .
任何建议为什么会发生这种情况?
我能想到这些原因:
仅当触发SQL语句中指定的所有操作都已成功执行时,才会触发AFTER UPDATE触发器 . 在此触发器触发之前,所有参考级联操作和约束检查也必须成功 . [Quote]如果没有您注意到,其他更新可能会失败 .
如果UPDATE是长时间运行的事务的一部分,则其他更新可能正在等待第一个提交 .
你的触发器有一个错误 .
无论如何,您是否已经了解了SQL Server提供的审计功能?
1 回答
我能想到这些原因:
仅当触发SQL语句中指定的所有操作都已成功执行时,才会触发AFTER UPDATE触发器 . 在此触发器触发之前,所有参考级联操作和约束检查也必须成功 . [Quote]如果没有您注意到,其他更新可能会失败 .
如果UPDATE是长时间运行的事务的一部分,则其他更新可能正在等待第一个提交 .
你的触发器有一个错误 .
无论如何,您是否已经了解了SQL Server提供的审计功能?