Рассмотрим следующий SQL:
BEGIN TRAN
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
INSERT Bands
( Name )
SELECT 'Depeche Mode'
UNION
SELECT 'Arcade Fire'
-- I've indented the inner transaction to make it clearer.
BEGIN TRAN
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT *
FROM Bands
COMMIT
-- What is the isolation level right here?
UPDATE Bands
SET Name = 'Modest Mouse'
WHERE Name = 'Oddest House'
COMMIT
В итоге мы запускаем транзакцию и устанавливаем уровень ее изоляции READ COMMITTED
. Затем мы делаем некоторый случайный SQL и запускаем другую вложенную транзакцию. В этой транзакции мы изменяем уровень изоляции на READ UNCOMMITTED
. Затем мы фиксируем эту транзакцию и возвращаемся к другой.
Теперь я предполагаю, что после внутренней фиксации уровень изоляции возвращается к READ COMMITTED
. Это правильно?