SQL Server在批量更新中触发执行

tar*_*ppa 4 sql sql-server triggers

我需要知道触发器执行如何发生在下面的场景中.

我在表中有20条记录,我AFTER INSERT, UPDATE在该表上有一个触发器.当我使用MERGE批处理更新语句更新该表中的所有记录时,触发器将如何执行?

它是否逐行执行?

或者每批执行一次(所有20条记录一次)?

如果每批执行一次,我们是否需要在触发器内写一个循环来执行每一行的任务?

mar*_*c_s 5

SQL Server中的触发器总是每批执行一次 - 在SQL Server中没有"for each row"触发器的选项.

当您批量更新表时,触发器将在和伪表中一次接收所有更新的行,并且需要相应地处理它们 - 作为一组数据 - 而不是单行inserteddeleted

  • @tarzanbappa:几乎 - 触发器有两个“伪”表 - `inserted` 和 `deleted`。在 `UPDATE` 语句的情况下,`deleted` 包含旧值(在 `UPDATE` 之前),而 `inserted` 包含新值。没有“更新的”伪表 (2认同)