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
Pokyny k cvičení
- Zahaj transakci.
- Oprav chybu v operaci.
- Uvnitř bloku
TRYzkontroluj, zda existuje otevřená transakce, a potvrď ji. - Uvnitř bloku
CATCHzkontroluj, 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