Začněte nyníZačněte zdarma

Kontrola @@TRANCOUNT v konstrukci TRY...CATCH

Majitel účtu číslo 10 vyhrál tombolu a získá odměnu 200 \(. Připravíš jednoduchý skript, který přičte těchto 200 \) k current_balance účtu číslo 10. Myslíš si, že jsi vše napsal/a správně, ale raději si kód zkontroluješ.

Ve skutečnosti jsi při přidávání částky udělal/a drobnou chybu: SET current_balance = 'current_balance' + 200. Napsal/a jsi 'current_balance' jako řetězec, což způsobí chybu.

Skript by měl při výskytu chyby odvolat všechny změny – nejprve zkontroluj, zda je otevřená transakce. Pokud vše proběhne správně, transakci potvrď a také zkontroluj, zda je otevřená transakce.

Toto cvičení je součástí kurzu

Transakce a zpracování chyb v SQL Serveru

Zobrazit kurz

Pokyny k cvičení

  • Zahaj transakci.
  • Oprav chybu v operaci.
  • Uvnitř bloku TRY zkontroluj, zda existuje otevřená transakce, a potvrď ji.
  • Uvnitř bloku CATCH zkontroluj, zda existuje otevřená transakce, a odvolej ji.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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
Upravit a spustit kód