sql / intermediate
Snippet
Teilweise Transaktionsrückabwicklung mit Savepoints
Savepoints ermöglichen eine feingliedrige Kontrolle über die Transaktionsausführung, indem sie Zwischenspeicherpunkte erstellen. Wenn spätere Anweisungen fehlschlagen oder verworfen werden sollen, kann auf einen bestimmten Savepoint zurückgesetzt werden, ohne den gesamten Transaktionsblock abzubrechen.
snippet.sql
sql
1
2
3
4
5
6
START TRANSACTION;INSERT INTO accounts (account_id, balance) VALUES (101, 500.00);SAVEPOINT payment_created;UPDATE accounts SET balance = balance - 100.00 WHERE account_id = 101;ROLLBACK TO SAVEPOINT payment_created;COMMIT;
Erklärung
1
START TRANSACTION;
Startet einen neuen expliziten Transaktionsblock in ANSI-SQL.
2
INSERT INTO accounts (account_id, balance) VALUES (101, 500.00);
Führt die erste datenverändernde SQL-Anweisung innerhalb des aktiven Transaktionskontexts aus.
3
SAVEPOINT payment_created;
Erstellt einen benannten Prüfpunkt innerhalb der Transaktion, auf den später zurückgegriffen werden kann.
4
UPDATE accounts SET balance = balance - 100.00 WHERE account_id = 101;
Führt eine Aktualisierungsoperation nach dem Savepoint aus.
5
ROLLBACK TO SAVEPOINT payment_created;
Macht Änderungen rückgängig, die nach dem Savepoint payment_created vorgenommen wurden, während frühere Änderungen erhalten bleiben.
6
COMMIT;
Speichert alle verbleibenden, nicht zurückgesetzten Änderungen dauerhaft in der Datenbank.