我需要知道触发器执行如何发生在下面的场景中。
我在表中有20条记录,并且该表上有AFTER INSERT, UPDATE
触发器。当我使用MERGE
或批量更新语句更新该表中的所有记录时,触发器将如何执行?
它是否逐行执行?
或者每批执行一次(所有20条记录一次)?
如果每批执行一次,我们是否需要在触发器内写一个循环来执行每一行的任务?
答案 0 :(得分:5)
SQL Server中的触发器始终每批执行一次 - 对于每一行"没有选项" SQL Server中的触发器。
当您批量更新表时,触发器将在inserted
和deleted
伪表中一次性接收所有更新的行,并需要相应地处理它们 - 作为数据集 - 不是单行