Grundlagen der Datenbanken

In einer Kontentabelle wird eine Transaktion gestartet, und ein UPDATE, das vom Saldo von Konto A 300 abzieht, sowie ein UPDATE, das zum Saldo von Konto B 300 addiert, werden ausgeführt. Danach wird statt COMMIT ein ROLLBACK ausgeführt. Was geschieht mit der Kontentabelle?

  1. ANur die Addition auf Konto B wird verworfen; der Abzug von Konto A bleibt bestehen
  2. BBeide UPDATEs werden verworfen, und die Tabelle kehrt in den Zustand vor Beginn der Transaktion zurück
  3. CDa die UPDATEs bereits ausgeführt wurden, wird keines von beiden verworfen
Antwort und Erläuterung anzeigen

Antwort: B. Beide UPDATEs werden verworfen, und die Tabelle kehrt in den Zustand vor Beginn der Transaktion zurück

Eine Transaktion ist ein Mechanismus, der eine Folge von Operationen auf einer Datenbank als eine Einheit behandelt. Innerhalb einer Transaktion vorgenommene Änderungen werden mit COMMIT dauerhaft und mit ROLLBACK sämtlich verworfen, sodass die Daten in den Zustand vor Beginn der Transaktion zurückkehren. Hier werden sowohl der Abzug von Konto A als auch die Addition auf Konto B verworfen, und beide Salden bleiben unverändert. Tritt mitten in einer Überweisung ein Fehler auf, sorgt ein ROLLBACK dafür, dass kein halbfertiger Zustand zurückbleibt, in dem nur ein Konto geändert ist. Um nur einen Teil zu verwerfen, kann man mit SAVEPOINT eine Markierung setzen und mit ROLLBACK TO SAVEPOINT dorthin zurückkehren.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. Welche der ACID-Eigenschaften, die eine Transaktion haben sollte, besagt, dass eine Überweisung, die Konto A belastet und Konto B gutschreibt, entweder vollständig oder gar nicht ausgeführt wird, selbst wenn zwischendurch ein Fehler auftritt?
  2. Der Bestand eines Produkts in einer Lagertabelle ist 10. Transaktion T1 liest den Bestand und schreibt den Wert minus 3 zurück, T2 liest den Bestand und schreibt den Wert minus 5 zurück. Wie hoch ist der Endbestand, wenn beide ohne Sperren in der Reihenfolge T1 liest, T2 liest, T1 schreibt, T2 schreibt ablaufen?
  3. Welche Aussage beschreibt unter den Problemen, die bei gleichzeitig laufenden Transaktionen auftreten, einen Dirty Read richtig?
  4. Transaktion T1 führte SELECT COUNT(*) FROM Bestellung WHERE Betrag >= 1000 aus und erhielt 8. Unmittelbar danach fügte T2 eine Bestellzeile mit einem Betrag von 2000 per INSERT ein und schrieb sie fest. Als T1 dieselbe SELECT-Anweisung erneut ausführte, erhielt sie 9. Um welches Phänomen handelt es sich?
  5. Welche Antwort nennt richtig die Phänomene, die unter dem im SQL-Standard definierten Isolationslevel READ COMMITTED auftreten können?