Poziomy izolacji i transakcje
SERIALIZABLE to poziom izolacji, który tworzy migawkę rekordu w momencie wydania pierwszego zapytania lub polecenia aktualizacji. Jeśli dane zostaną zmienione poza transakcją, zgłaszany jest błąd. Warto wiedzieć, że transakcja może wykonywać inne operacje – na przykład deklarować zmienne – zanim zostanie wydane pierwsze zapytanie.
Do pracy z danymi użyjesz ponownie zbioru FFIEC. Skupisz się na przypadkach, w których roczna zmiana depozytów oszczędnościowych RCON0352 jest zaburzona przez duże odchylenie.
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w PostgreSQL
Instrukcje do ćwiczenia
- Rozpocznij transakcję w trybie
SERIALIZABLE. - Zaktualizuj wszystkie rekordy, w których
RCON0352jest większe niż 100 000, stosując redukcję o 50%. - Zatwierdź transakcję poleceniem
COMMIT. - Wybierz liczbę rekordów, w których
RCON0352nadal jest większe niż 100 000.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- Create a new transaction with a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;