Eine Transaktion bei einem Fehler zurücksetzen
An deinem ersten Arbeitstag bekommst du die Aufgabe, Transaktionen einzurichten, die Geldüberweisungen in deiner Bank protokollieren.
Du möchtest ein einfaches Skript vorbereiten, bei dem 100 $ von account_id = 1 zu account_id = 5 überwiesen werden. Danach sollen diese Bewegungen in der Tabelle transactions erfasst werden. Du denkst, du hast alles korrekt geschrieben, aber als vorsichtiger Mensch überprüfst du es lieber!
Tatsächlich ist dir ein Fehler passiert. Statt eine neue Transaktion für Konto 5 einzufügen, hast du sie für Konto 500 eingefügt, das es nicht gibt.
Um künftige Fehler zu vermeiden, soll das Skript bei einem Fehler alle Änderungen zurücksetzen (rollback). Wenn alles korrekt läuft, soll die Transaktion bestätigt (committed) werden.
Diese Übung ist Teil des Kurses
Transaktionen und Fehlerbehandlung in SQL Server
Anleitung zur Übung
- Beginne die Transaktion.
- Korrigiere den Fehler in der Operation.
- Bestätige die Transaktion, wenn keine Fehler auftreten.
- Setze innerhalb des
CATCH-Blocks die Transaktion zurück.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
BEGIN TRY
-- Begin the transaction
BEGIN ___;
UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
INSERT INTO transactions VALUES (1, -100, GETDATE());
UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
-- Correct it
INSERT INTO transactions VALUES (500, 100, GETDATE());
-- Commit the transaction
___ TRAN;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Rollback the transaction
___ ___;
END CATCH