触发器 - FOR/AFTER/INSTEAD OF 的差异

Trigger - Difference in FOR/AFTER/INSTEAD OF

我需要在触发器上重建以下部分:

{ FOR | AFTER | INSTEAD OF } 

所以如果触发器有“instead of”,它可能是 0 或 1:

SELECT
 is_instead_of_trigger  
FROM sys.triggers
Where object_id = Object_Id ('')

如果特定触发器有 forafter,我该如何解决?

我相信 afterfor 是一回事。

它要么代替,is_instead_of_trigger 将有 1 作为值。或 (FOR | AFTER) 为 0.

CREATE TRIGGER

对于 |后 AFTER 指定仅当触发 SQL 语句中指定的所有操作都已成功执行时才触发 DML 触发器。所有引用级联操作和约束检查也必须在此触发器触发之前成功。 当 FOR 是指定的唯一关键字时,AFTER 是默认值。 不能在视图上定义 AFTER 触发器。

有两种触发器,

  1. Instead Of 触发而不是触发操作的触发器
  2. After or For 在触发操作后触发的触发器。

目录视图 sys.triggers 的列 is_instead_of_trigger 将告诉您是否是一个 Instead of 触发器,如果​​值 0 则它是 For or After Trigger,如果值1 那么它就是一个 Instead of Trigger