У меня есть следующий код в хранимой процедуре.
....
select ... into #temp from ....
alter table #temp add constraint PK_mytemp13 primary key (....)
....
И я получаю следующее сообщение об ошибке время от времени, если хранимая процедура выполняется параллельно.
В базе данных уже есть объект с именем "PK_perf322dsf". Не удалось создать ограничение. См. Предыдущие ошибки.
Я думаю, этого можно избежать с помощью следующих подходов. Есть ли еще более элегантное решение?
-
Сначала создайте временную таблицу с первичным ключом. Затем вставьте строки.
create table #temp (... primary key (....))
-
Динамически динамически создавайте PK с идентификатором сеанса.
declare @s varchar(500) = 'alter table #temp add constraint PK_temp' + @@spid + ' primary key (....)