FOR和AFTER触发器之间的区别?

FOR和AFTER触发器有什么区别?

没有区别,他们做同样的事情。

CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE 

是相同的

 CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE 

INSTEAD OF触发器是不同的,并且在插入之前触发,并且可以在视图上使用,以便将适当的值插入到基础表中。

@本是绝对正确的。

这里是MSDN文章探索SQL Server触发器

文章中的一段:

该语法在旧版本的SQL Server中也是可以接受的。 但是,现在在SQL Server 2000中有两种types的触发器, 我倾向于将FOR触发器称为AFTER触发器。 因此,对于本文的其余部分,我将引用AFTER或INSTEAD OF触发器。

像之前看到的AFTER触发器一样,该触发器可以防止对姓氏字段进行更改。 然而,它实现这个业务规则不同于前面的例子。 由于INSTEAD OF触发器触发代替UPDATE语句,因此INSTEAD OF触发器会评估业务规则testing是否通过。 如果业务规则testing通过,为了进行更新,INSTEAD OF触发器必须再次显式地调用UPDATE语句。

AFTER指定仅当触发SQL语句中指定的所有操作都已成功执行时触发DML触发器。 所有引用级联动作和约束检查也必须在触发器触发前成功。 当FOR是唯一指定的关键字时,AFTER是默认值。

AFTER触发器不能在视图上定义。

INSTEAD OF指定执行DML触发器而不是触发SQL语句,因此覆盖触发语句的操作。 不能为DDL或login触发器指定INSTEAD OF。

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql