Istruzione SET TRANSACTION ISOLATION LEVEL (Livello di isolamento della transazione)

Sintassi

SET TRANSACTION ISOLATION LEVEL level

Descrizione

Utilizzare l'istruzione SET TRANSACTION ISOLATION LEVEL per impostare il livello di isolamento delle transazioni predefinito necessario per il programma.

Nota: il livello di isolamento impostato con questa dichiarazione rimane in vigore finché non viene emessa un'altra dichiarazione di questo tipo. Questo influisce su tutte le attività della sessione, compresi i comandi di InfoSphere® DataStage® e le transazioni SQL.

L'istruzione SET TRANSACTION ISOLATION LEVEL non può essere eseguita quando esiste una transazione. Il tentativo di farlo provoca un messaggio di errore in fase di esecuzione, il fallimento del programma e il rollback di tutte le transazioni non impegnate avviate nell'ambiente di esecuzione.

livello ha la seguente sintassi:

{n | keyword | expression}

il livello è un'espressione che valuta da 0 a 4 o una delle seguenti parole chiave:

Tabella 1. Effetti dei LIVELLI DI ISOLAMENTO sulle transazioni
Numero intero Parola chiave Effetto sulla presente Operazione
0 NO.ISOLATION Previene la perdita di aggiornamenti.1
1 READ.UNCOMMITTED Previene la perdita di aggiornamenti.
2 READ.COMMITTED Previene gli aggiornamenti persi e le letture sporche.
3 REPEATABLE.READ Previene gli aggiornamenti persi, le letture sporche e le letture non ripetibili.
4 Serializzabile Previene gli aggiornamenti persi, le letture sporche, le letture non ripetibili e le scritture fantasma.

1Gli aggiornamenti persi vengono impediti se il parametro configurabile ISOMODE è impostato su 1 o 2.

Esempi

L'esempio seguente imposta il livello di isolamento predefinito a 3 e avvia una transazione al livello di isolamento 4. Il livello di isolamento viene riportato a 3 al termine della transazione.

SET TRANSACTION ISOLATION LEVEL REPEATABLE.READ
PRINT "We are at isolation level 3."
BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE
         PRINT "We are at isolation level 4."
         COMMIT WORK
END TRANSACTION
PRINT "We are at isolation level 3"

L'esempio successivo utilizza un'espressione per impostare il livello di transazione:

PRINT "Enter desired transaction isolation level:":
INPUT TL
   SET TRANSACTION LEVEL TL
   BEGIN TRANSACTION
      .
      .
      .
   END TRANSACTION