2013-08-13 4 views
0

Я столкнулся с странным сценарием в Oracle. один клиент пытается получить несколько записей с параметром разрешения «выбрать для обновления» (строки будут заблокированы до завершения транзакции). Прежде чем первый клиент зафиксирует транзакцию, другой клиент также может попытаться получить доступ к строкам с правом только на чтение. возможно ли заблокировать строки для второго клиента, которые были заблокированы первым клиентом до фиксации транзакции. Прошу вас посоветовать. Спасибо заранее.блокировать строки для запроса запроса до запроса на обновление

ответ

0

В Oracle читатели никогда не блокируют писателей и писателей, которые никогда не блокируют читателей. Таким образом, другой сеанс всегда сможет считывать текущее состояние строки, независимо от того, что делает процесс обновления.

Если вы хотите, чтобы строки не читались, вам нужно закодировать дополнительную логику блокировки. Читатель мог также сделать SELECT ... FOR UPDATE с или без WAIT, чтобы он блокировался до совершения транзакции писателя. Вы также можете построить логику блокировки с использованием другой таблицы. Вы можете построить некоторую логику, когда автор обновляет строку в другой таблице, указывая на то, что процесс обновления продолжается, и все процессы чтения могут прочитать эту строку.

+0

спасибо за руководство меня в правильном направлении – Venkat

Смежные вопросы