sql server觸發(fā)器中自動(dòng)生成的臨時(shí)表
在sql server中,建立sql server觸發(fā)器后,會(huì)生成deleted 和inserted表,這兩張表可以理解為臨時(shí)表,下面就為您介紹sql server觸發(fā)器中自動(dòng)生成的臨時(shí)表,供您參考。
sql server觸發(fā)器中,系統(tǒng)自動(dòng)會(huì)生成兩張臨時(shí)表,分別是deleted 和inserted 它們是邏輯(概念)表。也可理解為是臨時(shí)表。
為方便理解,可以這么來(lái)認(rèn)為Inserted表和Deleted表的作用:Inserted表就是放新的記錄,Delete表就是放舊的記錄。并且,它們的表結(jié)構(gòu)與原表是完全相同的。
1。當(dāng)你插入時(shí),要插入的記錄是新的,所以可以在Insert表中找到。
如:table1中本來(lái)就有N條記錄,但執(zhí)行 insert into table1 value('1') 那么,在table1的sql server觸發(fā)器的 Inserted表中,有且僅有同樣一條記錄。
select * from Inserted ,結(jié)果為: 1 而不是table1的N+1條記錄。
2。當(dāng)你更新時(shí),要更新的記錄是新的,所以可以在Inserted表中找到,被更新的記錄是舊的,所以可以在Deleted表中找到。
如:有條記錄 1 要改為 2
select * from Deleted 的結(jié)果為1 select * from Inserted 的結(jié)果為2
3。當(dāng)你刪除時(shí),要?jiǎng)h除的記錄是舊的,所以可以在Deleted表中找到。
如:表中有1,2,3,4 四條記錄,刪除其中三條,則 select * from deleted 的結(jié)果為 1,2,3
當(dāng)對(duì)某張表建立sql server觸發(fā)器后,分3種情況討論
1.插入操作(Insert)
Inserted表有數(shù)據(jù),Deleted表無(wú)數(shù)據(jù)
2.刪除操作(Delete)
Inserted表無(wú)數(shù)據(jù),Deleted表有數(shù)據(jù)
3.更新操作(Update)
Inserted表有數(shù)據(jù)(新數(shù)據(jù)),Deleted表有數(shù)據(jù)(舊數(shù)據(jù))
【編輯推薦】