我在存儲過程中有以下代碼。腳本並行運行時爲#temp表創建PK失敗
....
select ... into #temp from ....
alter table #temp add constraint PK_mytemp13 primary key (....)
....
如果存儲過程並行運行,我將不時收到以下錯誤消息。
數據庫中已經有一個名爲'PK_perf322dsf'的對象。 無法創建約束。查看以前的錯誤。
我認爲這可以通過以下方法避免。還有其他更優雅的解決方案嗎?
首先用主鍵創建臨時表。然後插入行。
create table #temp (... primary key (....))
動態地使用會話ID動態創建PK。
declare @s varchar(500) = 'alter table #temp add constraint PK_temp' + @@spid + ' primary key (....)
這個錯誤與創建本地臨時表有關,在一段代碼中創建一個已命名的主鍵,並有多個連接調用該代碼塊。 SQL Server不允許具有相同名稱的2個PK,即使在本地臨時表中也是如此。 – CDC 2015-07-02 19:20:36