CommencerCommencer gratuitement

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

Afficher le cours

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
Modifier et exécuter le code