sql / expert
Snippet
Transaktionsisolationsstufen und Atomarität
Dieser Ausschnitt demonstriert die Verwendung einer hohen Isolationsstufe, um die Datenintegrität während einer Überweisung zu gewährleisten. Durch das Setzen auf SERIALIZABLE verhindert die Datenbank Phantom-Reads und Write-Skew, wodurch sichergestellt wird, dass die beiden UPDATE-Operationen als eine einzige atomare Arbeitseinheit behandelt werden.
snippet.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;BEGIN;UPDATE accountsSET balance = balance - 500WHERE account_id = 'A' AND balance >= 500;UPDATE accountsSET balance = balance + 500WHERE account_id = 'B';COMMIT;
Erklärung
1
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Setzt die höchste Isolationsstufe, um zu verhindern, dass gleichzeitige Transaktionen die Datenkonsistenz beeinträchtigen.
2
BEGIN;
Startet den expliziten Transaktionsblock.
3
UPDATE accounts ... WHERE balance >= 500;
Subtrahiert den Betrag nur, wenn der Saldo die fachliche Bedingung erfüllt.
4
COMMIT;
Speichert alle während der Transaktion vorgenommenen Änderungen dauerhaft in der Datenbank.