sql / intermediate
Snippet
Verwaltung partieller Rollbacks mittels Savepoints
Savepoints setzen Zwischenmarkierungen innerhalb einer Transaktion. Wenn eine nachfolgende Anweisung fehlschlägt oder eine bedingte Rücknahme erfordert, kann die Transaktion gezielt auf den Savepoint zurückgesetzt werden, ohne vorherige Änderungen komplett abzubrechen.
snippet.sql
sql
1
2
3
4
5
6
START TRANSACTION;UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;SAVEPOINT balance_deducted;UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;ROLLBACK TO SAVEPOINT balance_deducted;COMMIT;
Erklärung
1
START TRANSACTION;
Leitet eine explizite Transaktionsgrenze gemäß ANSI-SQL-Standard ein.
2
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
Führt die erste Kontostandsänderung aus.
3
SAVEPOINT balance_deducted;
Erstellt einen Wiederherstellungspunkt namens 'balance_deducted' in der aktiven Transaktion.
4
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
Führt eine zweite Aktualisierung aus, die später selektiv zurückgesetzt werden kann.
5
ROLLBACK TO SAVEPOINT balance_deducted;
Macht nur Änderungen nach 'balance_deducted' rückgängig und behält das erste Update bei.
6
COMMIT;
Speichert alle verbleibenden, nicht zurückgesetzten Änderungen dauerhaft in der Datenbank.