XACT_ABORT et THROW
Les clients les plus fortunés de la banque où vous travaillez ont décidé de donner 0,01 % de leur current_balance à une organisation à but non lucratif. Vous êtes chargé de préparer le script pour mettre à jour les comptes des clients, mais uniquement pour les comptes dont le current_balance dépasse 5 000 000 $. La directrice de la banque vous indique que s’il n’y a pas au moins 10 clients fortunés, vous ne devez pas effectuer cette opération, car elle souhaite d’abord rencontrer davantage de clients.
Vous préparez un script et, parmi les différentes façons de faire, vous choisissez d’utiliser XACT_ABORT en combinaison avec THROW. Ainsi, si le nombre de lignes affectées est inférieur ou égal à 10, vous pouvez lever une erreur pour que la transaction soit annulée.
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans SQL Server
Instructions
- Utilisez le paramétrage approprié de
XACT_ABORT. - Démarrez la transaction.
- Si le nombre de lignes affectées est inférieur ou égal à 10, levez l’erreur à l’aide de l’instruction
THROW, avec le numéro 55000. - Validez la transaction si le nombre de lignes affectées est supérieur à 10.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- 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
___ ___;