XACT_ABORT en THROW
De meest vermogende klanten van de bank waar je werkt hebben besloten om 0,01% van hun current_balance te doneren aan een non-profitorganisatie. Jij moet het script voorbereiden om de rekeningen van klanten bij te werken, maar alleen voor die rekeningen met een current_balance van meer dan $5.000.000. De directeur van de bank geeft aan dat je deze operatie niet moet uitvoeren als er niet minstens 10 vermogende klanten zijn, omdat ze dan eerst meer klanten wil spreken.
Je maakt een script en kiest, van de meerdere manieren waarop dit kan, voor XACT_ABORT in combinatie met THROW. Op die manier kun je, als het aantal getroffen rijen kleiner dan of gelijk aan 10 is, een fout genereren zodat de transactie wordt teruggedraaid.
Deze oefening maakt deel uit van de cursus
Transacties en foutafhandeling in SQL Server
Oefeninstructies
- Gebruik de juiste instelling voor
XACT_ABORT. - Begin de transactie.
- Als het aantal getroffen rijen kleiner dan of gelijk aan 10 is, genereer dan de fout met de instructie
THROW, met nummer 55000. - Bevestig (COMMIT) de transactie als het aantal getroffen rijen groter is dan 10.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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
___ ___;