Livelli di isolamento e transazioni
SERIALIZABLE è un livello di isolamento che scatta un'istantanea del record quando viene eseguita la prima query o istruzione di aggiornamento e genera un errore se i dati vengono modificati in qualsiasi modo al di fuori della transazione. Nota che la transazione può svolgere altro lavoro, come dichiarare variabili, prima della prima query.
Userai di nuovo l'insieme di dati FFIEC per lavorare con dati in cui la variazione annuale dei depositi di risparmio RCON0352 è influenzata da un grande scostamento.
Questo esercizio fa parte del corso
Transazioni e gestione degli errori in PostgreSQL
Istruzioni dell'esercizio
- Avvia una transazione in modalità
SERIALIZABLE. - Aggiorna tutti i record in cui
RCON0352è maggiore di 100.000 con una riduzione del 50%. - Esegui il
COMMITdella transazione. - Seleziona il conteggio dei record che hanno ancora
RCON0352maggiore di 100.000.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- Create a new transaction with a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;