我已经创建了on update
触发器。更新触发器在多记录更新上触发的频率如何?
如果我在一个语句中更新表中的5条记录,触发器会执行多少次?如果我有多条语句更新单个事务中的记录,它会改变吗?
在所有交易完成后它执行5次还是仅执行一次?
我已经创建了on update
触发器。更新触发器在多记录更新上触发的频率如何?
如果我在一个语句中更新表中的5条记录,触发器会执行多少次?如果我有多条语句更新单个事务中的记录,它会改变吗?
在所有交易完成后它执行5次还是仅执行一次?
这一切都取决于您使用的触发器的类型。
SELECT
或正在使用一个多行语法来插入更多INSERT
陈述属实一次一行)Oracle,PostgreSQL和DB2同时支持行级和语句级触发器。 Microsoft SQL Server仅支持语句级触发器,MySQL仅支持行级触发器。
考虑到您使用的是SQL Server,触发器只会在每次更新时触发一次。
如果这不是你想要的,你可以考虑使用不同的更新语句来确保触发器每次都会触发。
您可以在SQL触发器上查看this turorial。它涵盖了一切。
请注意,如果您使用的是Oracle,触发器可以基于行。不在SQL Server中。
使用SQL 2008: 如果您正在进行更新5行的1次更新,则应该只执行一次触发器。
这就是为什么你必须使用“INSERTED”和“DELETED”表来检测所有修改过的行。
如果您正在执行更新1行的5个更新,则触发器将执行5次。
你在使用什么数据库服务器? Oracle,Sybase,SqlServer等? –
您使用的是什么RDBMS?无论如何,如果你的更新是一个事务,那么无论有多少记录被更新(当然,如果它至少有一个),那么触发器将执行一次 – Lamak
@Lamak:不正确。它取决于它是行级别还是语句级别触发器(当然,它也取决于DBMS,有些不支持行级触发器) –