Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Starta en REPEATABLE READ-transaktion.
  • Minska RCON2203 med 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 ett SAVEPOINT efter 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 
Redigera och kör kod