LoslegenKostenlos loslegen

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

Kurs anzeigen

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
Code bearbeiten und ausführen