다음 SQL을 고려하십시오.SQL Server에서 중첩 트랜잭션의 격리 범위는 무엇입니까?
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
로 돌아갑니다. 이 올바른지?
이것이 맞습니다. 방금 sp_lock으로 테스트했습니다. –