我创建了一个on update
触发器。
如果我在单个语句中更新表中的 5 条记录,触发器将执行多少次?如果我有多个语句更新单个事务中的记录,它会改变吗?
它是执行 5 次,还是在所有事务完成后只执行一次?
我创建了一个on update
触发器。
如果我在单个语句中更新表中的 5 条记录,触发器将执行多少次?如果我有多个语句更新单个事务中的记录,它会改变吗?
它是执行 5 次,还是在所有事务完成后只执行一次?
这完全取决于您使用的触发器类型。
INSERT
,对于基于 aSELECT
或使用多行语法一次插入多行的语句也是如此)Oracle、PostgreSQL 和 DB2 都支持行级和语句级触发器。Microsoft SQL Server 仅支持语句级触发器,MySQL 仅支持行级触发器。
使用 SQL 2008:如果您正在执行更新 5 行的 1 次更新,则触发器应该只执行一次。
这就是为什么您必须使用表“INSERTED”和“DELETED”才能检测到所有修改的行。
如果您正在执行 5 次更新以更新 1 行,则触发器将执行 5 次。
考虑到您使用的是 SQL Server,触发器只会在每次更新时触发一次。
如果这不是您想要的,您可以考虑使用不同的更新语句来确保触发器每次都会触发。
你可以看看这个关于 SQL 触发器的教程。它涵盖了一切。
请注意,如果您使用的是 Oracle,则触发器可以基于行。不在 SQL Server 中。