💎 Lehrpfad 4: Performance, Transaktionen & Master

SQL 14: ACID Transaktionen, COMMIT, ROLLBACK & Savepoints

Garantierte Datenintegrität in geschäftskritischen Systemen: Lerne die 4 ACID-Säulen, sichere Überweisungen mit BEGIN TRANSACTION, Fehlerbehandlung mit ROLLBACK und feingranulare SAVEPOINTs.

📂 Dateien dieser Lerneinheit:
📄 aufgabe.sql (Startercode) 🧪 test_aufgabe.sql (Testsuite) 💡 musterloesung.sql (Lösung) 📖 README.md

🛡️ 1. Die 4 Säulen des ACID-Prinzips

Eine Transaktion ist eine logische Arbeitseinheit aus mehreren SQL-Befehlen, die als unteilbares Ganzes ausgeführt werden muss:

⚛️ A – Atomicity (Atomarität)

Alles oder nichts: Schlägt ein Teilschritt fehl, wird die gesamte Transaktion rückgängig gemacht.

⚖️ C – Consistency (Konsistenz)

Die Datenbank wechselt nur von einem gültigen Zustand in den nächsten (z.B. CHECK-Constraints).

🔒 I – Isolation (Isolation)

Gleichzeitige Transaktionen stören sich nicht gegenseitig (keine unvollständigen Zwischenstände lesbar).

💾 D – Durability (Dauerhaftigkeit)

Nach einem erfolgreichen COMMIT sind Daten dauerhaft auf Festplatte / WAL persistiert.

🏦 2. Transaktionssteuerung & Savepoints

-- Eine sichere Banküberweisung:
BEGIN TRANSACTION;

-- 1. Geld von Konto A abziehen
UPDATE konten SET saldo = saldo - 100 WHERE id = 1;

-- 2. Geld auf Konto B gutschreiben
UPDATE konten SET saldo = saldo + 100 WHERE id = 2;

-- 3. Transaktions-Log schreiben
INSERT INTO transfer_logs (von_id, an_id, betrag) VALUES (1, 2, 100);

-- Alles erfolgreich? -> Dauerhaft festschreiben!
COMMIT;

📍 Teilschritte sichern mit SAVEPOINT

BEGIN TRANSACTION;
INSERT INTO bestellungen (id, status) VALUES (1, 'offen');

SAVEPOINT lager_reserviert;
-- Versuche optionale Zusatz-Aktion:
UPDATE lager SET bestand = bestand - 5 WHERE artikel_id = 99;

-- Bei Problem mit Zusatz-Aktion nur zum Savepoint zurückspringen:
ROLLBACK TO SAVEPOINT lager_reserviert;

-- Haupt-Bestellung trotzdem abschließen:
COMMIT;

🏭 3. Didaktische Analogie: Der Geldautomat

🏧 Der ATM-Auszahlungs-Vergleich

Stell dir vor, der Geldautomat bucht 200 € von deinem Girokonto ab, aber genau im Moment der Geldschein-Ausgabe fällt der Strom aus!

Ohne ACID: Dein Kontostand ist um 200 € ärmer, aber du hast kein Bargeld.

Mit ACID (Rollback): Die Datenbank erkennt den Ausfall, bricht die unvollständige Transaktion ab und setzt den Kontostand automatisch auf den Ursprungswert zurück.

📑 4. Cheat-Sheet: Transaktions-Kommandos

Befehl Wirkung Beispiel
BEGIN TRANSACTION; Startet eine atomare Transaktion (Autocommit aus) BEGIN TRANSACTION;
COMMIT; Schreibt alle Änderungen dauerhaft fest COMMIT;
ROLLBACK; Verwirft alle unvollständigen Änderungen der Transaktion ROLLBACK;
SAVEPOINT <name>; Erstellt einen Zwischenspeicherpunkt innerhalb der Transaktion SAVEPOINT vor_bonus;
ROLLBACK TO <name>; Setzt Änderungen gezielt nur bis zum Savepoint zurück ROLLBACK TO vor_bonus;

🧠 Diagnostischer Selbst-Check

Überprüfe dein Verständnis der Kernkonzepte und typischen Denkfallen, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in aufgabe.sql

Öffne die Datei aufgabe.sql und implementiere die 4 Aufgaben:

💻 In Web-IDE öffnen & lösen →