Isoleringsnivåer och transaktioner
SERIALIZABLE är en isoleringsnivå som tar en ögonblicksbild av posten när den första frågan eller uppdateringssatsen körs, och genererar ett fel om data ändras på något sätt utanför transaktionen. Observera att transaktionen kan utföra annat arbete, till exempel deklarera variabler, innan den första frågan körs.
Du kommer att använda FFIEC-datamängden igen för att arbeta med data där den årliga förändringen i sparinsättningar RCON0352 påverkas av en stor offset.
Den här övningen är en del av kursen
Transaktioner och felhantering i PostgreSQL
Övningsinstruktioner
- Starta en transaktion i
SERIALIZABLE-läge. - Uppdatera alla poster där
RCON0352är större än 100 000 med en minskning på 50 %. COMMITa transaktionen.- Välj antalet poster som fortfarande har ett
RCON0352-värde större än 100 000.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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;