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
Pokyny k cvičení
- Nastav
XACT_ABORTna příslušnou hodnotu. - Začni transakci.
- Pokud je počet ovlivněných řádků menší nebo roven 10, vyvolej chybu pomocí příkazu
THROWs čí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
___ ___;