日期:2014-05-17  浏览次数:20496 次

请问,虚拟表Inserted、Deleted
Deleted虚拟表储存的是多少行数据啊,只是刚删除的那行呢,还是先前删除的,都储存在里面,什么时候是空的呢?

------解决方案--------------------
Deleted里面的是本次要删除的那些数据,删除动作是先存到这个表里面,然后再进行的,
------解决方案--------------------
Deleted表中,你删除多少行就保存多少行。


nserted表:用来存储INSERT和UPDATE语句所影响的行的副本。意思就是在inserted表中临时保存了被插入或被更新后的记录行。在执行 INSERT 或UPDATE 语句时,新加行被同时添加到inserted表和触发器表中。因此,可以从inserted表检查插入的数据是否满足需求,如不满足则回滚撤消操(cāo)作。


deleted表:用来存储DELETE和UPDATE语句所影响行的副本。意思是在delete表中临时保存了被删除或被更新前的记录行。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传到deleted表中。所以可以从deleted表中检查删除的数据行是否能删除。


所以当表中某条记录的某项值发生变化时,变化前的值已经通过系统自动创建的临时表deleted表和inserted表保存了被删除行或插入的记录行的副本。我们可以从这两个表中查询出变化前的值并赋给变量。


------解决方案--------------------
参考 http://blog.csdn.net/coolhao123/article/details/7660087
------解决方案--------------------
对于insert操作,则inserted表行数为你新增的行数,deleted表行数为0
对于update操作,则inserted,deleted表的行数都和你更新的行数相等
对于delete操作,则deleted表行数为你删除的行数,inserted表行数为0

inserted,deleted表都是存在内存中的虚拟表