Anularea unei tranzacții în caz de eroare
În prima ta zi de muncă, ai primit sarcina de a configura tranzacțiile care înregistrează transferurile de bani din banca ta.
Vrei să pregătești un script simplu prin care 100 $ sunt transferați din account_id = 1 către account_id = 5. Ulterior, aceste mișcări sunt înregistrate în tabela transactions. Crezi că ai scris totul corect, dar, fiind un angajat precaut, preferi să verifici fiecare detaliu!
De fapt, ai făcut o greșeală. În loc să inserezi o nouă tranzacție pentru contul 5, ai făcut-o pentru contul 500, care nu există.
Pentru a preveni erori viitoare, scriptul pe care îl creezi ar trebui să anuleze toate modificările dacă apare o eroare. Dacă totul decurge corect, tranzacția ar trebui să fie confirmată.
Acest exercițiu face parte din cursul
Tranzacții și gestionarea erorilor în SQL Server
Instrucțiuni pentru exercițiu
- Începe tranzacția.
- Corectează greșeala din operațiune.
- Confirmă tranzacția dacă nu există erori.
- În interiorul blocului
CATCH, anulează tranzacția.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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