SQL Server是否在单行UPDATE上执行许多UPDATE请求?

时间:2013-11-26 08:30:41

标签: sql sql-server-2008 triggers

我在一个Db表上有一个AFTER UPDATE触发器。 - 这是用于将审计日志插入审计表。

我有3个并行应用程序独立运行,并且它们会在同一记录上进行更新。

我的问题是,即使该行从3个不同的应用程序更新3次,我只看到一个审核日志。

问题: 是否有可能当SQL Server在一条记录上收到几个UPDATE时,它会将它们作为一个UPDATE操作执行?因为UPDATE触发器只被触发一次?

2 个答案:

答案 0 :(得分:1)

三个来源的三个更新将在三个事务中运行,并触发三次更新触发器。 SQL Server将使用锁定来限制三个事务之间的交互。

答案 1 :(得分:1)

SQL Server永远不会将这些更新视为同一行的一次更新(实际上它不是记录,但这是一个不同的故事)。

首先,3个应用程序有3个不同的连接,因此它们将作为3个更新进入。 其次,当第一次更新到达SQL Server时,该行将被锁定,直到此更新完成并写入事务日志。然后第二次更新可以完成他的工作,等等..

因此,TRIGGER将始终触发三次(如果提交了更新)。