Какой тип блокировки помещается в строку, которая обновляется в транзакции?

Если я запускаю транзакцию с уровнем изоляции "read uncommitted" в SQL Server, то я читаю и обновляю определенную строку, блокируется ли эта строка в силу того, что она является частью транзакции?

Если другая транзакция (также с незафиксированным чтением) попытается прочитать и обновить эту строку, будет ли она заблокирована, пока первая транзакция еще не завершена?

1 ответ

Чтение незафиксированного уровня изоляции не ставит общие блокировки, но устанавливает эксклюзивные блокировки. Таким образом, блокируется ли сеанс 2 сеансом один, зависит от следующего сценария:

Если 2-й сеанс пытается обновить строку, у которой уже есть x-блокировка, сеансом 1. То есть второй сеанс пытается установить x-блокировку для той же строки, в которой сеанс, на который был установлен x-блокировка, будет заблокирован.

Другие вопросы по тегам