Zacznij terazZacznij za darmo

Sprawdzanie @@TRANCOUNT w konstrukcji TRY...CATCH

Właściciel konta numer 10 wygrał loterię i otrzymuje nagrodę w wysokości 200 USD. Przygotowujesz prosty skrypt, który doda te 200 USD do kolumny current_balance dla konta 10. Wydaje ci się, że wszystko napisano poprawnie, ale wolisz jeszcze raz sprawdzić swój kod.

Okazuje się, że popełniono błąd podczas dodawania kwoty: SET current_balance = 'current_balance' + 200. Wartość 'current_balance' została zapisana jako ciąg znaków zamiast nazwy kolumny – to powoduje błąd.

Tworzony skrypt powinien wycofywać wszystkie zmiany w razie błędu, sprawdzając przy tym, czy istnieje otwarta transakcja. Jeśli wszystko przebiegnie pomyślnie, transakcja powinna zostać zatwierdzona – również z weryfikacją, czy transakcja jest otwarta.

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.
  • Wewnątrz bloku TRY sprawdź, czy istnieje otwarta transakcja, i zatwierdź ją.
  • Wewnątrz bloku CATCH sprawdź, czy istnieje otwarta transakcja, i wycofaj ją.

Interaktywne ćwiczenie praktyczne

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

BEGIN TRY
	-- Begin the transaction
	___ ___;
    	-- Correct the mistake
		UPDATE accounts SET current_balance = 'current_balance' + 200
			WHERE account_id = 10;
    	-- Check if there is a transaction
		IF ___ > 0     
    		-- Commit the transaction
			___ ___;
     
	SELECT * FROM accounts
    	WHERE account_id = 10;      
END TRY
BEGIN CATCH  
    SELECT 'Rolling back the transaction'; 
    -- Check if there is a transaction
    IF ___ > 0   	
    	-- Rollback the transaction
        ___ ___;
END CATCH
Edytuj i uruchom kod