Является ли READ COMMITED транзакционным уровнем изоляции при использовании FOR UPDATE?

Изучив в Интернете информацию об уровнях транзакционной изоляции, я понял, что блокировка строк в MySQL может быть достигнута с помощью: SELECT...FOR UPDATE или же LOCK IN SHARE MODE а также, что запрос на блокировку строки должен выполняться после запуска транзакции. Поэтому я натолкнулся на пример, иллюстрирующий реализацию уровня изоляции READ COMMITTED для двух сессий:

--session 1
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

BEGIN TRANSACTION;

SELECT FirstName FROM EmployeeInfo
WHERE EmpID = 1;

WAITFOR DELAY '00:00:05'

SELECT FirstName FROM EmployeeInfo
WHERE EmpID = 1;

ROLLBACK TRANSACTION;

Код для сеанса 2 выглядит так:

 --session 2
UPDATE EmployeeInfo
SET FirstName = 'Frank'
WHERE EmpID = 1;

В примере кода для session1 Уровень изоляции транзакции и начало транзакции являются явными. В каком-то блоге я читал, что

  • Операторы UPDATE неявно создают блокировки READ для затронутых строк в транзакции.
    Значит ли это, что я могу смело опустить SET TRANSACTION ISOLATION LEVEL READ COMMITTED; из сеанса 1 и до сих пор получают те же результаты. Другими словами, насколько верно утверждение Операторы UPDATE неявно создают блокировки READ для затронутых строк в транзакции.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector