Choisir quand valider (commit) ou annuler (rollback) une transaction
La banque où vous travaillez a décidé d’offrir 100 \( aux comptes ayant moins de 5 000 \). Cependant, le directeur souhaite n’accorder cette somme que s’il n’y a pas plus de 200 comptes en dessous de 5 000 $.
Vous préparez un script pour verser ces 100 \( et, parmi plusieurs façons de procéder, vous choisissez d’ouvrir une transaction puis de mettre à jour chaque compte avec un solde inférieur à 5 000 \). Ensuite, vous vérifiez le nombre de lignes affectées par la mise à jour à l’aide de la fonction @@ROWCOUNT. Si ce nombre est supérieur à 200, vous annulez la transaction (rollback). Sinon, vous la validez (commit).
Comment préparez-vous le script ?
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans SQL Server
Instructions
- Démarrer la transaction.
- Vérifier si le nombre de lignes affectées est supérieur à 200.
- Annuler la transaction si le nombre de lignes affectées est supérieur à 200.
- Valider la transaction si le nombre de lignes affectées est inférieur ou égal à 200.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END