Zacznij terazZacznij za darmo

Wycofywanie transakcji w przypadku błędu

Pierwszego dnia pracy dostałeś zadanie skonfigurowania transakcji, które rejestrują przelewy pieniędzy w banku.

Chcesz przygotować prosty skrypt, w którym 100 $ jest przelewane z account_id = 1 na account_id = 5. Następnie skrypt rejestruje te operacje w tabeli transactions. Wydaje ci się, że wszystko napisałeś poprawnie – ale jako ostrożny pracownik wolisz to sprawdzić!

Okazuje się, że jednak popełniłeś błąd. Zamiast wstawić nową transakcję dla konta 5, zrobiłeś to dla konta 500, które nie istnieje.

Aby zapobiec podobnym błędom w przyszłości, skrypt powinien wycofywać wszystkie zmiany w razie wystąpienia błędu. Jeśli wszystko przebiegnie poprawnie, transakcja powinna zostać zatwierdzona.

To ćwiczenie jest częścią kursu

Transakcje i obsługa błędów w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Rozpocznij transakcję.
  • Popraw błąd w operacji.
  • Zatwierdź transakcję, jeśli nie wystąpiły żadne błędy.
  • Wewnątrz bloku CATCH wycofaj transakcję.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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
Edytuj i uruchom kod