Začněte nyníZačněte zdarma

Vliv savepointu na úrovně izolace

Teď, když znáš savepointy, využijeme je k nastavení série transakcí, které všechny potřebují pracovat se stejným počátečním snímkem dat. REPEATABLE READ je úroveň izolace, která zajistí, že každý příkaz uvnitř transakce vidí stejná data jako první příkaz – nikoli data upravená předchozími příkazy.

FEEIC nedávno povolila postupné omezení zahraničních vkladů, pole RCON2203 v tisících dolarů. Nová omezení jsou: 35 % pro vklady nad 1 miliardu dolarů, 25 % pro vklady nad 500 milionů dolarů a 13 % pro vklady nad 300 milionů dolarů. Příkazy by šlo seřadit tak, aby se data nesnižovala vícekrát. S REPEATABLE READ však každý příkaz vidí data před jakýmikoli úpravami.

Toto cvičení je součástí kurzu

Transakce a ošetření chyb v PostgreSQL

Zobrazit kurz

Pokyny k cvičení

  • Zahaj transakci s úrovní izolace REPEATABLE READ.
  • Sniž hodnotu RCON2203 o 35 % pro částky nad 1 miliardu dolarů, o 25 % pro částky nad 500 milionů dolarů nebo o 13 % pro částky nad 300 milionů dolarů – za každým příkazem nastav SAVEPOINT.
  • Transakci uzavři.
  • Vypočítej součet pole RCON2203.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

-- 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 
Upravit a spustit kód