Použití isolation level
Jak bylo ukázáno ve videu, někdy je důležité nastavit isolation level pro konkrétní transakci. K tomu je nejvhodnější použít START TRANSACTION, což je alias pro BEGIN TRANSACTION a jasně signalizuje, že se děje něco specifického. Při spuštění transakce můžeš zadat ISOLATION LEVEL.
Tady použijeme REPEATABLE READ, který nás chrání před dirty reads, nonrepeatable reads a phantom reads. V datech FFEIC představuje RCON2210 pole demand deposits – sleduje všechny aktivní běžné účty, šeky vydané bankou a nezaúčtované kredity. Pro banku mohou být závazkem, pokud by z jakéhokoli důvodu nastala vlna výběrů. Pojďme najít všechny banky s demand deposits přesahujícími 100 000 000 $.
Toto cvičení je součástí kurzu
Transakce a ošetření chyb v PostgreSQL
Pokyny k cvičení
- Spusť transakci s repeatable read.
- Vyber všechny záznamy, kde
RCON2210přesahuje 100 000 000 $ v demand deposits. - Vyber všechny záznamy, kde
RCON2210stále přesahuje 100 000 000 $ v demand deposits. - Potvrď transakci.
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 an isolation level of repeatable read
___ TRANSACTION ___ LEVEL ___ ___;
-- Count of records over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Count of records still over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Commit the transaction
___;