Pergunta

Considere o seguinte 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

Em suma, iniciar uma transação e defina seu nível de isolamento para READ COMMITTED. Nós, em seguida, fazer alguma SQL aleatória e iniciar outro, transação aninhada. Nesta operação que altere o nível de isolamento para READ UNCOMMITTED. Em seguida, cometer essa transação e retorno para o outro.

Agora, o meu palpite é que depois de cometer o interior, o nível de isolamento retorna ao READ COMMITTED. É este correto?

Foi útil?

Solução

Eu não acho que está correto.

Consulte as observações aqui: Set Transaction

Apenas um dos o nível de isolamento opções podem ser definidas em um momento, e permanece definido para a conexão enquanto que seja explicitamente alterado.

Outras dicas

Você [Bob Probst] estão correctas. Curiosamente, de acordo com o href="http://msdn.microsoft.com/en-us/library/ms173763(SQL.90).aspx" documentação é ligada:

Se você emitir SET nível de transação isolamento em um procedimento armazenado ou gatilho, quando o objeto retorna controlar o nível de isolamento é redefinido para o nível em vigor quando o objeto foi invocado. Por exemplo, se você definir REPEATABLE READ em um lote, e do lote, em seguida, chama um procedimento armazenado que define o nível de isolamento para SERIALIZABLE, as reverte definição do nível de isolamento para REPEATABLE READ quando o procedimento armazenado retorna o controle para o lote.

Assim, a linha inferior aqui é que LEVEL SET TRANSACTION ISOLATION tem procedimento afinidade , não transação afinidade (como eu tinha pensado).

Awesome!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top