Ein Isolation Level verwenden
Wie im Video gezeigt, ist es manchmal wichtig, für eine einzelne Transaktion ein Isolation Level festzulegen. Am besten nutzt du dafür START TRANSACTION (ein Alias von BEGIN TRANSACTION), um klarzumachen, dass hier etwas anders ist. Du kannst beim Start der Transaktion ein ISOLATION LEVEL angeben.
Hier verwenden wir REPEATABLE READ, das uns vor Dirty Reads, Nonrepeatable Reads und Phantom Reads schützt. In den FFEIC-Daten ist RCON2210 das Feld für Sichteinlagen (demand deposits) und erfasst alle offenen Girokonten, bankeigenen Schecks und noch nicht gebuchten Gutschriften. Das kann für eine Bank zur Verbindlichkeit werden, wenn es aus irgendeinem Grund zu einem plötzlichen Mittelabzug kommt. Finde alle Banken mit mehr als $100,000,000 an Sichteinlagen.
Diese Übung ist Teil des Kurses
Transaktionen und Fehlerbehandlung in PostgreSQL
Anleitung zur Übung
- Starte eine Transaktion mit Repeatable Read.
- Wähle alle Datensätze aus, bei denen
RCON2210bei den Sichteinlagen über $100,000,000 liegt. - Wähle erneut alle Datensätze aus, bei denen
RCON2210weiterhin über $100,000,000 liegt. - Führe ein Commit der Transaktion durch.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
-- 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
___;