Frage

Betrachten Sie das folgende 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

Insgesamt starten wir eine Transaktion und stellen Sie die Isolationsstufe auf READ COMMITTED. Wir tun dann einige zufällige SQL und starten Sie eine andere, verschachtelte Transaktion. In dieser Transaktion ändern wir die Isolationsstufe READ UNCOMMITTED. Wir verpflichten dann diese Transaktion und Rückkehr in die andere.

Nun, meine Vermutung ist, dass nach dem inneren verpflichten, die Isolationsstufe READ COMMITTED zurückgibt. Ist das richtig?

War es hilfreich?

Lösung

Ich glaube nicht, das ist richtig.

Beachten Sie die Bemerkungen hier: Set Transaktion

  

Nur eines der Isolationsstufe   Optionen können zu einem Zeitpunkt festgelegt werden, und es   bleibt für diese Verbindung gesetzt, bis   es wird explizit geändert.

Andere Tipps

Sie [Bob Probst] korrekt sind. Interessanterweise nach dem Dokumentation verknüpft:

  

Wenn Sie Ausgabe Transaktionsisolationsstufe in einer Stored Procedure oder Trigger gesetzt, wenn das Objekt kehrt die Isolationsstufe steuern auf das Niveau in der Tat zurückgesetzt wird, wenn das Objekt aufgerufen wurde. wenn Sie WIEDERHOLBARE READ in einer Charge und der Ansatz dann ruft eine gespeicherte Prozedur zum Beispiel festgelegt, dass die Isolationsstufe auf SERIALIZABLE setzt, kehrt die Isolationsstufe Einstellung READ wiederholbar, wenn die gespeicherte Prozedur kehrt zum Batch-Steuerung.

So, hier ist das Endergebnis, dass SET TRANSACTION ISOLATION LEVEL hat Prozedur Affinität , nicht Transaktion Affinität (wie ich gedacht hatte).

Awesome!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top