【发布时间】:2018-09-28 15:54:14
【问题描述】:
我从 table1 触发器调用了更新查询,当该查询运行时,它成功更新了其他 table2,但 table2 的更新触发器仅触发了 1 次,这意味着不是针对从更新查询更新的每条记录
我使用的是 SQL Server 2008 Express 版本-
请指点我哪里错了
【问题讨论】:
-
能否提供更多信息,代码,表结构
-
对于所有受影响的记录,每个 UPDATE、INSERT 或 DELETE 命令都会调用一次触发器。虚拟表 INSERTED 和 DELETED 如果多条记录受该命令影响,将有多条记录。
-
我已经在答案中展示了我的第一个更新触发器,您可以在其中看到,更新查询成功运行并按预期更新所有记录,但是除了第一条记录之外的所有记录都不会触发 2table 的更新触发器。
-
马尔科夫,我已经发布了第二个答案,我通过在触发器中使用光标而不是更新查询来实现我想要的结果。一切正常。但问题是我不想使用游标,所以我替换我的游标来设置基于更新查询的方法。
-
@DavidDubois,正如你所说,触发器为每个更新命令调用一次,你的意思是,不是所有通过更新查询更新的行?因为您知道 sql 是基于设置的方法,所以可以通过单个命令一次更新多条记录。
标签: sql sql-server triggers sql-update sql-server-2008-express