SQL触发器中,系统自动会生成两张临时表,分别是deleted 和 inserted 它们是逻辑(概念)表。也可理解为是临时表。
为方便理解,可以这么来认为Inserted表和Deleted表的作用:Inserted表就是放新的记录,Delete表就是放旧的记录。并且,它们的表结构与原表是完全相同的。
1。当你插入时,要插入的记录是新的,所以可以在Insert表中找到。
如:table1中本来就有N条记录,但执行 insert into table1 value('1')?? 那么,在table1的触发器的 Inserted表中,有且仅有同样一条记录。? select * from Inserted ,结果为: 1 而不是table1的N+1条记录。
2。当你更新时,要更新的记录是新的,所以可以在Inserted表中找到,被更新的记录是旧的,所以可以在Deleted表中找到。
如:有条记录 1 要改为 2 select * from Deleted 的结果为1 select * from Inserted 的结果为2
3。当你删除时,要删除的记录是旧的,所以可以在Deleted表中找到。
如:表中有1,2,3,4 四条记录,删除其中三条,则 select * from deleted 的结果为 1,3
----------------------------------------------硅谷动力上看到的-------------------------
顺便说一下,当对某张表建立触发器后,分3种情况讨论?
1.插入操作(Insert)?
Inserted表有数据,Deleted表无数据?
2.删除操作(Delete)?
Inserted表无数据,Deleted表有数据?
3.更新操作(Update)? Inserted表有数据(新数据),Deleted表有数据(旧数据)
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|