update触发器中,什么时候用deleted和inserted临时表?
触发器中可以嵌套存储过程吗?

解决方案 »

  1.   

    能不能嵌套,你自己试一下就知道了。deleted是用于准备删除的数据,inserted是用于准备插入的数据。
      

  2.   

    可以嵌套的Deleted表用于存储DELETE和UPDATE语句所影响的行的复本。在执行DELETE或UPDATE语句时,行从触发器表中删除,并传输到deleted表中。Deleted表和触发器表通常没有相同的行。
    Inserted表用于存储INSERT和UPDATE语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到inserted表和触发器表中。Inserted表中的行是触发器表中新行的副本。
    更新事务类似于在删除之后执行插入;首先旧行被复制到 deleted 表中,然后新行被复制到触发器表和 inserted 表中。
      

  3.   

    那你就得理解什么是Inserted和Deleted表了(以下简称I表和D表)。
    比如你要更新一张表里有一行为"张三,12,男"
    你想更新张三的年龄为14岁,那么就用到了sql语句,如下
    update 表 set nianling='14' where name='张三'
    就会将12改为14,但是这是你看到的最终结果,数据库里并不是一部完成的,他先删除原有的行(将其放入D表中),再插入新的一列(该列在I表中,但是也是你最终看到的效果)
    呢么I表中就有“张三,14,男”
    D表中就又“张三,12,男”
    明白了这你就知道触发器里什么时候用I表和D表了,根据自己的需求吧
      

  4.   

    触发器除了多了个inserted,delete表,还有一些状态之外,和存储过程没啥区别,关键是他会被DML语句触发而已