2012-07-20 38 views
2

可能重複:
Local and Global temporary table in SQL SERVER#SQL服務器數據完整性表?

我想知道是否有任何人可以給我一個更好的解釋在SQL #tables的工作。

在我們的一個存儲過程中,我們創建了一個臨時表(#table),其中數據由當前活動的存儲過程存儲。爲了討論起見,我們稱這個爲Sproc1

Sproc1被稱爲sproc2。調用之後,sproc2從#table中收集數據,然後刪除#table,因爲它不再需要。

這一切理論上都行之有效,但如果兩個或二十個人在同一時間調用/執行sproc2呢?

所以,我想知道SQL是否會創建一個新的實例(通過連接鏈接)的#table爲每個調用者使用sproc2或將有衝突?

回答

1

當你創建一個表,一個散列標籤(如在你的例子) - 只有創建將有機會獲得它,當關閉連接會被自動刪除連接。

如果您需要確保所有連接都可以看到它,則可以使用全局臨時表(## table),但在連接關閉時它們也會被刪除,因此請確保您不要假設它存在於您的過程中。

2

你應該沒問題。 #table臨時表只對同一SQL會話中的調用可見。

一個很好的解釋可以找到here