Korzystanie z poziomu izolacji
Jak pokazano w filmie, w niektórych sytuacjach ważne jest, aby móc wybrać poziom izolacji dla konkretnej transakcji. Najlepiej użyć do tego START TRANSACTION – aliasu BEGIN TRANSACTION – który wyraźnie sygnalizuje, że coś jest inne. Poziom izolacji (ISOLATION LEVEL) można określić już podczas uruchamiania transakcji.
W tym ćwiczeniu użyjemy REPEATABLE READ, który chroni przed odczytami brudnych danych (dirty reads), niepowtarzalnymi odczytami (nonrepeatable reads) oraz odczytami fantomowymi (phantom reads). W danych FFEIC pole RCON2210 oznacza depozyty na żądanie – obejmuje wszystkie aktywne rachunki bieżące, czeki wystawione przez bank oraz niezaksięgowane kredyty. Mogą one stanowić zobowiązanie dla banku w przypadku nagłego odpływu środków. Znajdźmy wszystkie banki z depozytami na żądanie przekraczającymi 100 000 000 $.
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w PostgreSQL
Instrukcje do ćwiczenia
- Rozpocznij transakcję z poziomem izolacji repeatable read.
- Wybierz wszystkie rekordy, w których
RCON2210przekracza 100 000 000 $ w depozytach na żądanie. - Wybierz ponownie wszystkie rekordy, w których
RCON2210nadal przekracza 100 000 000 $ w depozytach na żądanie. - Zatwierdź transakcję.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- 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
___;