Update触发器多次触发多记录更新的频率?

时间:2012-07-03 15:07:08

标签: sql triggers sql-update

我创建了一个on update触发器。

如果我在一个语句中更新表中的5条记录,触发器会执行多少次?如果我有多个语句在单个事务中更新记录,它会改变吗?

它是在所有交易完成后执行5次,还是只执行一次?

3 个答案:

答案 0 :(得分:10)

这一切都取决于您使用的触发类型。

  • 将针对受DML语句影响的每一行触发行级别触发器(请注意,对于基于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中。

相关问题