CommencezCommencez gratuitement

Annuler une transaction en cas d'erreur

Lors de votre première journée de travail, on vous a confié la tâche de mettre en place des transactions qui enregistrent les virements d'argent dans votre banque.

Vous voulez préparer un petit script où 100 $ sont transférés de account_id = 1 vers account_id = 5. Ensuite, il consigne ces mouvements dans la table transactions. Vous pensez avoir tout écrit correctement, mais par prudence, vous préférez tout vérifier!

En fait, vous avez bel et bien fait 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 futures erreurs, 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).

Cette activité fait partie du cours

Transactions et gestion des erreurs dans SQL Server

Voir le cours

Instructions de l’exercice

  • Commencez 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 (roll back) la transaction.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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