create trigger t on tbb
 instead of delete 
as 
select 1; 
select * from tbb 
select 1; 
go 

解决方案 »

  1.   

    for 就是after触发器,before触发器是instead of
      

  2.   

    关于触发器的常见应用可以参考
    http://blog.csdn.net/jinjazz/archive/2008/12/01/3420299.aspx
      

  3.   

    我补充几点:1.sqlserver无before类型的dml触发器。
    2.设对ta表建有before insert触发器(oracle)
    执行对ta insert记录时,先执行insert语句,再执行 before触发器,然后提交insert语句本身。设对ta表建有instead of insert触发器(mssql)
    执行对 ta insert记录时, 先执行insert语句,再执行instead触发器, 之后insert语句被回滚(即,被触发器内部逻辑的替换,能不能插入数据,看触发器里是否有插入操作)从这点上来说,before触发器和instead触发器有很大区别,连相似都谈不上。3.到于楼主你自己所说的 for和after好像是一样的,对于你的例子来说,确实是一样的,但它们之间是有区别的,这里我就不多说了,引用联机丛书一段话
    ------------------------------------------------------------------------------------------------------------------
    AFTER指定触发器只有在触发 SQL 语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。如果仅指定 FOR 关键字,则 AFTER 是默认设置。不能在视图上定义 AFTER 触发器。