2012-02-23 66 views
0

我正在運行一個sql查詢,其中涉及創建一個臨時表來做一些處理。我的問題是會發生什麼事我臨時SQL表,如果讓一個使用我app.I說10K用戶正在創建和將數據插入到表如下如果多個用戶使用我的應用程序,我的臨時表在mssql中會發生什麼?

BEGIN TRANSACTION; 
BEGIN TRY 
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL BEGIN DROP TABLE #Temp; END 
Select * Into #Temp From  [Booking] where purchaseorder='123' 
-- Do some processing on temp table and 
-- save data into some other table. 
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL BEGIN DROP TABLE #Temp; END 

END TRY 
BEGIN CATCH 
    IF @@TRANCOUNT > 0 
     ROLLBACK TRANSACTION; 
END CATCH; 

IF @@TRANCOUNT > 0 
    COMMIT TRANSACTION; 
GO 

它可以是我的臨時會得到一些下降其他用戶,而不是創建它的用戶? 我的應用程序是在asp.net

感謝

回答

1

表以#開始是隻在查詢的特定範圍活躍,多個用戶運行相同的查詢處於不同的範圍,因此不會相互影響。 ##臨時表是全球性的,其他會話可能會影響它們。

1

沒有,本地臨時表(那些單#開始)中是唯一的連接。沒有辦法讓另一個連接刪除你的表。

事實上,你寫防禦性代碼試圖下降事先這樣的表是相當奇怪的。

對於大多數簡單的查詢,表變量可能會更好(因爲這些都更容易理解範圍)

相關問題