我在一个Db表上有一个AFTER UPDATE触发器。 - 这是用于将审计日志插入审计表。
我有3个并行应用程序独立运行,并且它们会在同一记录上进行更新。
我的问题是,即使该行从3个不同的应用程序更新3次,我只看到一个审核日志。
问题: 是否有可能当SQL Server在一条记录上收到几个UPDATE时,它会将它们作为一个UPDATE操作执行?因为UPDATE触发器只被触发一次?
答案 0 :(得分:1)
三个来源的三个更新将在三个事务中运行,并触发三次更新触发器。 SQL Server将使用锁定来限制三个事务之间的交互。
答案 1 :(得分:1)
SQL Server永远不会将这些更新视为同一行的一次更新(实际上它不是记录,但这是一个不同的故事)。
首先,3个应用程序有3个不同的连接,因此它们将作为3个更新进入。 其次,当第一次更新到达SQL Server时,该行将被锁定,直到此更新完成并写入事务日志。然后第二次更新可以完成他的工作,等等..
因此,TRIGGER将始终触发三次(如果提交了更新)。