我在存儲過程的代碼如下,運行光標內:臨時表:默認名稱主鍵已經存在
IF (OBJECT_ID('tempdb..#newSales','U') IS NOT NULL)
DROP TABLE #newSales
CREATE TABLE #newSales
(
AddressId INT NOT NULL,
ItemId INT NOT NULL,
[Date] DATE NOT NULL,
Sale REAL NULL
)
/* some code here */
ALTER TABLE #newSales
ADD PRIMARY KEY CLUSTERED ([AddressId] ASC, [ItemId] ASC, [Date] ASC)
週期性我得到以下錯誤(名稱每次都是不同):
數據庫中已有一個名爲'PK__#newSale__34CE1EAA297D3472'的對象。
我檢查了類似的問題,但其中大多數都與顯式命名約束。我無法理解這是怎麼發生的,因爲在這種情況下,PK的名字是自動生成的,理論上它必須是唯一的(即使有多個連接調用這個過程)。
什麼是錯誤的根源?
也許兩個線程同時運行代碼。在光標內創建一個表似乎不是一個好主意。 –
據我所知,如果兩個線程正在運行代碼,那麼將同時存在2個相同的臨時表,但自動生成的名稱必須幫助解決這個問題,不是嗎?我只是不知道爲什麼生成的名稱是相同的... 關於遊標中的表格:爲什麼這是一個壞主意?我在哪裏可以讀到它? – STiLeTT