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.
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:
| 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