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

Rollback transakce při chybě

Hned první den v práci dostaneš za úkol nastavit transakce, které zaznamenávají převody peněz v bance.

Chceš připravit jednoduchý skript, ve kterém se převede 100 $ z account_id = 1 na account_id = 5. Poté se tyto pohyby zaregistrují do tabulky transactions. Myslíš si, že jsi vše napsal/a správně – ale jako opatrný/á pracovník/pracovnice raději vše zkontroluješ!

A skutečně – chyba tam je. Místo vložení nové transakce pro účet 5 jsi ji vložil/a pro účet 500, který neexistuje.

Aby se podobným chybám předešlo, skript by měl při jakékoli chybě provést rollback všech změn. Pokud vše proběhne správně, transakce by se měla potvrdit.

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.
  • Pokud nedošlo k žádné chybě, transakci potvrď.
  • V bloku CATCH proveď rollback transakce.

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