Savepoints påverkan på isoleringsnivåer
Nu när du har utforskat savepoints ska vi använda dem för att sätta upp en serie transaktioner som alla behöver utgå från samma initiala ögonblicksbild av datan. REPEATABLE READ är en isoleringsnivå som ger varje sats i transaktionen samma data som den första satsen arbetade med, i stället för data som är ett resultat av föregående sats eller satser.
Nyligen tillät FFEIC en progressiv minskning av utländska insättningar – fältet RCON2203 i tusentals dollar – i datamängden. Den nya minskningen är 35 % för mer än 1 miljard dollar, 25 % för mer än 500 miljoner dollar och 13 % för mer än 300 miljoner dollar. Det går att ordna dessa satser så att datan inte minskas mer än en gång. Med REPEATABLE READ ser dock varje sats datan innan några justeringar har gjorts.
Den här övningen är en del av kursen
Transaktioner och felhantering i PostgreSQL
Övningsinstruktioner
- Starta en
REPEATABLE READ-transaktion. - Minska
RCON2203med 35 % om värdet överstiger 1 miljard dollar, med 25 % om det överstiger 500 miljoner dollar, eller med 13 % om det överstiger 300 miljoner dollar – med ettSAVEPOINTefter varje sats. - Avsluta transaktionen.
- Summera fältet
RCON2203.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- Create a new transaction with a repeatable read isolation level
___ TRANSACTION ISOLATION LEVEL ___ ___;
-- Update records with a 35% reduction if greater than 1000000000
UPDATE ffiec_reci
SET ___ = CAST(___ AS FLOAT) * .65
WHERE CAST(RCON2203 AS FLOAT) > 1000000000;
___ million;
-- Update records with a 25% reduction if greater than 500000000
UPDATE ___
___ ___ = CAST(___ AS FLOAT) * .75
___ CAST(RCON2203 AS FLOAT) ___ 500000000;
SAVEPOINT five_hundred;
-- Update records with a 13% reduction if greater than 300000000
___ ffiec_reci
___ ___ = CAST(___ AS FLOAT) * .87
___ CAST(___ AS FLOAT) ___ 300000000;
SAVEPOINT three_hundred;
-- Commit the transaction
___;
-- Select SUM the RCON2203 field
SELECT ___(CAST(RCON2203 AS FLOAT))
FROM ffiec_reci