【发布时间】:2010-07-22 17:39:11
【问题描述】:
我的数据库中的一张表上有两个触发器。一个用于插入触发器,另一个用于更新后触发器。插入触发器将使用值更新表。我的问题是这个;更新触发器是否可能在插入工作的同时触发?
【问题讨论】:
标签: sql-server triggers
我的数据库中的一张表上有两个触发器。一个用于插入触发器,另一个用于更新后触发器。插入触发器将使用值更新表。我的问题是这个;更新触发器是否可能在插入工作的同时触发?
【问题讨论】:
标签: sql-server triggers
FOR INSERT 触发器仅在INSERT 语句上触发。 FOR UPDATE 触发器将仅在UPDATE 语句上触发。当然,如果您的插入触发器执行任何UPDATE 语句,那么它将触发更新触发器,反之亦然。
UPDATE 触发器不会因为 INSERT 语句而触发(除了上面的 update-within-trigger 情况),但当然您仍然必须针对并发性进行设计,因为可能有两个不同的用户同时运行两个不同的操作 - 一个 INSERT 和一个 UPDATE。
【讨论】:
update 语句、merge 语句或通过复制进行后台更新之外,都可以触发for update 触发器
如果您的插入触发器对表进行更新,则会调用更新触发器。如果一个触发器触发另一个触发器,则称为“递归触发器”。
可以为整个服务器禁用递归触发器:
sp_configure 'nested_triggers', 0
go
reconfigure
或者对于一个数据库:
alter database yourdb set recursive_triggers off
【讨论】: