CREATE  TRIGGER trig_outGoods ON dbo.tb_OutStore
FOR insert,delete
AS sql_statement请问for 的用处是什么
为什么after和instead of都没有呢

解决方案 »

  1.   

    for 跟 after 一樣,都是在紀錄變更以後觸發
    instead of 是在紀錄變更之前觸發,它並不取執行原來的sql語句,而去執行觸發器本身所定義的操作
      

  2.   

    基本语法:
    CREATE TRIGGERtrigger_name
    ON {table | name}
    [WITH ENCRYPTION]
    {FOR | AFTER | INSTEAD OF}
      {[DELETE] [,] [UPDATE] [,]}
        [WITH APPEND]
        [NOT FOR REPLICATION]
    AS
        sql_statement[....n]不用after和instead of情况下就要用for.
      

  3.   

    AFTER 
    指定 DML 触发器仅在触发 SQL 语句中指定的所有操作都已成功执行时才被激发。所有的引用级联操作和约束检查也必须在激发此触发器之前成功完成。如果仅指定 FOR 关键字,则 AFTER 为默认值。 不能对视图定义 AFTER 触发器。 INSTEAD OF 
    指定 DML 触发器是“代替”SQL 语句执行的,因此其优先级高于触发语句的操作。不能为 DDL 触发器指定 INSTEAD OF。对于表或视图,每个 INSERT、UPDATE 或 DELETE 语句最多可定义一个 INSTEAD OF 触发器。但是,可以为具有自己的 INSTEAD OF 触发器的多个视图定义视图。 INSTEAD OF 触发器不可以用于使用 WITH CHECK OPTION 的可更新视图。如果将 INSTEAD OF 触发器添加到指定了 WITH CHECK OPTION 的可更新视图中,则 SQL Server 将引发错误。用户须用 ALTER VIEW 删除该选项后才能定义 INSTEAD OF 触发器。