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