ÎncepețiÎncepe gratuit

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

Vezi cursul

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
Editează și rulează codul