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

时间:2015-05-07 18:03:13

标签: sql-server sql-server-2014

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

{ FOR | AFTER | INSTEAD OF } 

因此,如果触发器具有“instead of”,则它可以是0或1:

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

如果特定触发器有forafter

,我如何解决?

2 个答案:

答案 0 :(得分:1)

我相信之后的是相同的。

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

CREATE TRIGGER

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

答案 1 :(得分:1)

有两种类型的触发器,

  1. Instead Of触发的触发而不是触发操作
  2. After or For触发操作后触发的触发器。
  3. 目录视图sys.triggers的列is_instead_of_trigger将告诉您是否为“是否触发”,如果值0则为For or After Trigger,如果为值{{ 1}}然后它是1