Примеры.
Версия 1.32 от Alexandr Fokin на 2025/09/19 15:03
Необходимый уровень изоляции | Запрос | Комментарий | |||||||||
Замечание: в приведенных ниже примерах не рассматриваются сценарии с использованием Оптимистичная блокировка. | |||||||||||
READ COMMITTED | BEGIN; UPDATE accounts SET balance = balance + @payment WHERE acctnum = @account1 UPDATE accounts SET balance = balance - @payment WHERE acctnum = @account2 COMMIT; |
(В данном случае строка заблокируется в момент обновления, чтение (select) с проверкой без явного указания updlock, то строка может быть изменена после проверки условия). | |||||||||
REPEATABLE READ |
|
(В данном случае чтение (select) накладывает share блокировку, что гарантирует, что строка не будет изменена). Данное поведение также может быть реализовано на уровне READ COMMITTED, но для этого нужно использовать механизм явных блокировок (обычно это что-то вроде UPDLOCK). |