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 à un organisme sans but lucratif. Vous êtes chargé de préparer le script pour mettre à jour les comptes de ces clients, mais seulement 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 rencontrer d'autres clients.
Vous préparez un script et, parmi plusieurs approches possibles, vous décidez d'utiliser XACT_ABORT en combinaison avec THROW. Ainsi, si le nombre de lignes touchées est inférieur ou égal à 10, vous pouvez lever une erreur afin que la transaction soit annulée.
Cette activité fait partie du cours
Transactions et gestion des erreurs dans SQL Server
Instructions de l’exercice
- Utilisez le paramètre approprié de
XACT_ABORT. - Commencez la transaction.
- Si le nombre de lignes touchées est inférieur ou égal à 10, levez l'erreur avec l'instruction
THROW, avec le numéro 55000. - Validez la transaction si le nombre de lignes touchées est supérieur à 10.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
-- 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
___ ___;