举例说明一下:如果是对某个表插入事件加一个触发器,那么当你插入数据时after触发器在插入数据以后执行触发器的内容,而instead of触发器则不会插入数据,还执行触发器的内容!

解决方案 »

  1.   

    顾名思义,AFTER是一旦UPDATE或者INSERT一行数据,则执行触发器动作。INSTEAD OF则是一旦UPDATE或者INSERT一行数据,则先执行触发器,而不先执行UPDATE或者INSERT命令。
      

  2.   

    可以参考:
    http://book.csdn.net/bookfiles/414/10041414951.shtml
      

  3.   

    11.3.1  After触发器的工作原理After触发器是在记录更变完之后才被激活执行的。以删除记录为例:当SQL Server接收到一个要执行删除操作的SQL语句时,SQL Server先将要删除的记录存放在删除表里,然后把数据表里的记录删除,再激活After触发器,执行After触发器里的SQL语句。执行完毕之后,删除内存中的删除表,退出整个操作。还是举上面的例子:在产品库存表里,如果要删除一条产品记录,在删除记录时,触发器可以检查该产品库存数量是否为零,如果不为零则取消删除操作。看一下数据库是怎么操作的:(1)接收SQL语句,将要从产品库存表里删除的产品记录取出来,放在删除表里。(2)从产品库存表里删除该产品记录。(3)从删除表里读出该产品的库存数量字段,判断是不是为零,如果为零的话,完成操作,从内存里清除删除表;如果不为零的话,用Rollback Transaction语句来回滚操作。11.3.2  Instead Of触发器的工作原理Instead Of触发器与After触发器不同。After触发器是在Insert、Update和Delete操作完成后才激活的,而Instead Of触发器,是在这些操作进行之前就激活了,并且不再去执行原来的SQL操作,而去运行触发器本身的SQL语句。