Créer une transaction avec SQL Server

Besoin de réaliser des opérations atomiques sur SQL Server ? Voici un article qui vous explique pas à pas la création d'une transaction, avec un exemple de test.

Article publié le 18/06/2024, dernière mise à jour le 18/06/2024

Si vous avez cliqué sur cet article, normalement vous savez déjà ce qu’est une transaction en base de données, et leur utilité.

Dans le cas où vous voudriez vous rafraichir la mémoire, vous pouvez lire notre article dédié : https://code-garage.fr/blog/quest-ce-qu-une-transaction-en-base-de-donnees

Créer une transaction

À l’intérieur d’une transaction toutes les opérations sont effectuées les unes à la suite des autres, elle ne peuvent pas être divisées.

On parle d’opérations “atomiques”

Pour démarrer une transaction sur SQL Server, il suffit de faire :

BEGIN TRANSACTION;

Mais il faut garder en tête qu’une transaction ne peut se terminer que dans deux états bien distincts :

  • Toutes les opérations ont été appliquées à la base
  • Aucune opération n’a été appliquée

Il n’y a pas d’entre-deux, c’est tout ou rien !

Valider une transaction

En SQL, lorsque l’on valide (et applique) une transaction, on parle de commit. La commande pour valider notre transaction est donc logiquement :

COMMIT TRANSACTION;

Annuler une transaction

Et à l’inverse, lorsque l’on veut retrouver l’état d’origine de sa base de données, on va faire un rollback, comme ceci ;

ROLLBACK TRANSACTION;

Exemple d’une transaction

Voici un exemple d’une transaction de démonstration, avec laquelle vous pouvez tester le commit ou le rollback en fonction de la valeur de la variable @Test :

-- Commencer une nouvelle transaction
BEGIN TRANSACTION;
DECLARE @Test BIT = 1; -- valeur à modifier

-- [...] <- Insérez votre code SQL
-- INSERT INTO <table> (<column1>, <column2>)
--  VALUES (<value1>, <value2>)

IF @Test = 1
	BEGIN
		-- Valider la transaction
		COMMIT TRANSACTION;
	END
ELSE
	BEGIN
		-- Annuler la transaction
		ROLLBACK TRANSACTION;
	END

Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant