2011-03-15 53 views
1

觸發器的魔術表是自己清空還是必須清空?當我們將數據插入到具有觸發器的表中時,首先將數據發送到插入的魔術表,然後轉到實際的表。但在此之後插入的魔術表保留其數據還是丟失?sql server中觸發器的魔術表

+0

你不應該打擾你自己。魔術表僅用於觸發器內部。數據庫知道如何處理它們。 – TheVillageIdiot 2011-03-15 06:53:12

+0

爲什麼我不應該?我很困擾,因爲我認爲如果他們沒有清空,那麼數據庫中將存在雙份數據 – sqlchild 2011-03-15 06:56:49

+0

請參閱@Mikael Eriksson的回答和鏈接文章。 – TheVillageIdiot 2011-03-15 07:27:00

回答

2

我認爲你在談論觸發器上下文中存在的INSERTED,DELETED記錄?爲什麼你會認爲它們只是暫時的,因爲它們不能在觸發器範圍之外訪問。

+0

是的,這些記錄是否保留在魔法表中? – sqlchild 2011-03-15 06:53:17

0

我發現在一本書的答案:

一旦觸發完成後,該表的數據是從該邏輯表中刪除。

邏輯表保存在TEMPDB臨時數據庫中,因此觸發器將影響tempdb的性能&將受任何其他使用tempdb的進程的影響。

這是不可能完成的這些邏輯表,如創建和INDEX任何進一步的處理,因爲它們在版本店舉辦 &數據只能通過SELECT語句&不能修改進行詢問。

我們只能在觸發器中訪問這些表以找出哪些記錄已被插入,更新或刪除。