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

XACT_ABORT a THROW

Nejbohatší zákazníci banky, ve které pracuješ, se rozhodli věnovat 0,01 % svého current_balance neziskové organizaci. Máš za úkol připravit skript pro aktualizaci jejich účtů, ale pouze pro účty s current_balance vyšším než 5 000 000 $. Ředitelka banky ti sdělila, že pokud by takových zákazníků bylo méně než 10, operaci nemá smysl provádět – chce nejdříve oslovit více zákazníků.

Připravíš skript a z různých možností se rozhodneš použít XACT_ABORT v kombinaci s THROW. Díky tomu můžeš v případě, že počet ovlivněných řádků je menší nebo roven 10, vyvolat chybu a transakci odvolat.

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

Transakce a zpracování chyb v SQL Serveru

Zobrazit kurz

Pokyny k cvičení

  • Nastav XACT_ABORT na příslušnou hodnotu.
  • Začni transakci.
  • Pokud je počet ovlivněných řádků menší nebo roven 10, vyvolej chybu pomocí příkazu THROW s číslem 55000.
  • Pokud je počet ovlivněných řádků větší než 10, transakci potvrď (commit).

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

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

-- Use the appropriate setting
SET XACT_ABORT ___;
-- Begin the transaction
___ ___; 
	UPDATE accounts set current_balance = current_balance - current_balance * 0.01 / 100
		WHERE current_balance > 5000000;
	IF @@ROWCOUNT <= 10	
    	-- Throw the error
		___ ___, 'Not enough wealthy customers!', 1;
	ELSE		
    	-- Commit the transaction
		___ ___; 
Upravit a spustit kód