Annuler une transaction en cas d’erreur
Lors de votre premier jour, on vous a confié la mise en place de transactions qui enregistrent les transferts d’argent dans votre banque.
Vous souhaitez préparer un script simple où 100 $ sont transférés de account_id = 1 vers account_id = 5. Ensuite, il enregistre ces mouvements dans la table transactions. Vous pensez avoir tout bien écrit, mais, prudent·e, vous préférez tout vérifier !
En réalité, vous avez commis une erreur. Au lieu d’insérer une nouvelle transaction pour le compte 5, vous l’avez fait pour le compte 500, qui n’existe pas.
Pour éviter de futurs problèmes, le script que vous créez doit effectuer un rollback de chaque modification si une erreur survient. Si tout se passe bien, la transaction doit être validée (committed).
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans SQL Server
Instructions
- Démarrez la transaction.
- Corrigez l’erreur dans l’opération.
- Validez la transaction s’il n’y a pas d’erreurs.
- Dans le bloc
CATCH, annulez la transaction.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
BEGIN TRY
-- Begin the transaction
BEGIN ___;
UPDATE accounts SET current_balance = current_balance - 100 WHERE account_id = 1;
INSERT INTO transactions VALUES (1, -100, GETDATE());
UPDATE accounts SET current_balance = current_balance + 100 WHERE account_id = 5;
-- Correct it
INSERT INTO transactions VALUES (500, 100, GETDATE());
-- Commit the transaction
___ TRAN;
END TRY
BEGIN CATCH
SELECT 'Rolling back the transaction';
-- Rollback the transaction
___ ___;
END CATCH