powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Блокировка таблиц транзакцией, чтоб ей жизни небыло!
1 сообщений из 1, страница 1 из 1
Блокировка таблиц транзакцией, чтоб ей жизни небыло!
    #32003347
AnKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MS SQL 7.0+Delphi5+ADO

Коллеги, помогите плиз. Суть проблемы в следующем:
Имеются 2 таблицы (Заголовки документов, детализация документов) Tab1(ID int, DocDescr char(15)), Tab2(Link_ID, DocDet char(20)). Связаны по полям ID-Link_ID. ID-автоинкримент.
Некоторые записи из этих таблиц необходимо перенести в аналогичные (назовем их Tab1_1 и Tab2_1).
Тело проседуры:

CREATE PROCEDURE Transfer(@ADocID int)
AS
DECLARE @NewRefID int

BEGIN TRAN

INSERT Tab1_1 (DocDescr)
SELECT DocDescr
FROM Tab1
WHERE Tab1.ID=@ADocID

SET @NewRefID=(SELECT MAX(ID) FROM Tab1_1)

INSERT Tab2_1 (Link_ID,DocDet)
SELECT
Link_ID=@NewRefID,
DocDet=Tab2.DocDet
FROM Tab2
WHERE Tab2.Link_ID=@ADocID

COMMIT TRAN

Пользователь на форме отмечает в гриде необходимые накладные, а затем в цикле в ADOStoredProc передается ID перемещаемого документа. Так вот, во время этого циклического переноса Tab1_1 и Tab2_1 блокируются так, что из них даже не выполняется СЕЛЕКТ в аналайзере:
"Your transaction (process ID #89) was deadlocked with another process and has been chosen as the deadlock victim. Rerun your transaction."

Не говоря уже о попытках других пользователей сделать перемещение.
Я, конечно упростил стуктуру таблиц. Там еще триггера висят- в общем один документ переносится секунд 10-15.

Как сделать так, чтобы не ругалась, а?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Блокировка таблиц транзакцией, чтоб ей жизни небыло!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]