Aan de slagGa gratis aan de slag

Een transactie terugdraaien als er een fout optreedt

Op je eerste werkdag krijg je de taak om transacties in te richten die vastleggen wanneer er geld wordt overgemaakt bij je bank.

Je wilt een eenvoudig script voorbereiden waarbij $100 wordt overgemaakt van account_id = 1 naar account_id = 5. Daarna worden die mutaties geregistreerd in de tabel transactions. Je denkt dat je alles goed hebt geschreven, maar als voorzichtige medewerker wil je het toch even checken!

Sterker nog, je hebt inderdaad een fout gemaakt. In plaats van een nieuwe transactie voor rekening 5 in te voegen, heb je dat gedaan voor rekening 500, die niet bestaat.

Om toekomstige fouten te voorkomen, moet het script dat je maakt elke wijziging terugdraaien (rollback) als er een fout optreedt. Als alles goed gaat, moet de transactie worden vastgelegd (committed).

Deze oefening maakt deel uit van de cursus

Transacties en foutafhandeling in SQL Server

Cursus bekijken

Oefeninstructies

  • Begin de transactie.
  • Corrigeer de fout in de bewerking.
  • Commit de transactie als er geen fouten zijn.
  • Rol binnen het CATCH-blok de transactie terug.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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 bewerken en uitvoeren