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
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