с транзакцией do, я определил метку, и на этой метке я обращаюсь к таблице с эксклюзивным блокировкой. И в конце метки я выполнил все изменения в этой таблице. bt теперь я с блоком транзакций. Теперь я попытался получить доступ к той же таблице в другом сеансе. Затем отобразится ошибка, таблица, используемая другим пользователем. Возможно ли, что мы можем освободить таблицу в транзакции, чтобы другой пользователь мог получить к ней доступ.Проблема с транзакциями и замками
Например:
Сессия 1)
DO TRANSACTION:
---
---
loopb:
REPEAT:
--
--
---------------------> control is here right now.
END. /*repeat*/
--
--
END. /*do transaction*/
Session 2)
Я попытался получить доступ к той же таблице, но это показывает ошибку, что таблица заблокирована другим пользователь.
Спасибо Abe, но я хочу обновить одну и ту же запись во второй сессии, которая удерживается в сеансе one.Но я не могу уменьшить размер транзакции, потому что он будет влиять на условия. Это их любой другой альтернативный вариант, который я также могу обновить мои записи во второй сессии. – jay
Jay, обновляя запись во втором сеансе, требует EXCLUSIVE-LOCK в записи, которая удерживается в первом сеансе и не будет выпущена до конца транзакции. Единственный способ, которым вы можете выполнить то, что вы пытаетесь сделать, - это 1) ограничить область транзакции, как указано в моем ответе, или 2) взять код блокировки записи в первом сеансе и сделать обновления во внешнем сеансе, например, используя вызов AppServer без статуса. –
Abe, я могу сузить область транзакций bcz, для этого требуется много изменений. Я думаю, что второй вариант хорош. Я попробую этот второй. Но я попытался использовать внешнюю процедуру (без вызова AppServer) для обновления записи второго сеанса. Табель все еще был заблокирован. – jay