SQLSERVER觸發器之臨時表
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,2,3
----------------------------------------------矽谷動力上看到的-------------------------
順便說一下,當對某張表建立觸發器後,分3種情況討論
1.插入操作(Insert)
Inserted表有資料,Deleted表無資料
2.刪除操作(Delete)
Inserted表無資料,Deleted表有資料
3.更新操作(Update)
Inserted表有資料(新資料),Deleted表有資料(舊資料)