У меня возникла тупиковая ситуация при вставке записей в таблицу sql с нескольких машин (более 5 машин).Я запускаю следующий SP с нескольких компьютеров одновременно и получаю взаимоблокировку.
create proc InsertDocuments (@folderId int, @entryIdTable EntryIdTable readonly)
begin tran
insert into [transaction] (transaction_date) values (CURRENT_TIMESTAMP);
select @transactionId = SCOPE_IDENTITY();
insert into document with (TABLOCK) (entry_id, transaction_id) select entry_id, @transactionId from @entryIdTable ;
insert into folder_document with (TABLOCK) (source_folder_id, document_id) select @folderId , document_id from document where transaction_id = @transactionId;
commit
Таблица документов имеет первичный ключ document_id, который также является столбцом идентификации.Transaction_id в таблице транзакций также является столбцом идентификаторов.EntryIdTable - это определенный пользователем тип таблицы.
Любой ввод будет высоко оценен.
Бибек Давади