BEGIN TRANSACTION
La commande BEGIN TRANSACTION en SQL fait partie du Transaction Control Language, qui permet de gérer des transactions. L’instruction BEGIN TRANSACTION marque le début d’une série d’instructions organisées en transaction. Une transaction se termine ensuite, soit par un ‘ROLLBACK’, soit par un ‘COMMIT’. L’instruction COMMIT permet de valider tous les changements faits sur la base de données dans la transaction, et n’est à effectuer qu’en l’absence d’erreur. En cas d’erreur, un ROLLBACK permet de revenir à l’état antérieur à la transaction.
Voici la syntaxe courante :
BEGIN TRANSACTION transaction_name ;
Exemple d’utilisation :
Imaginons une base de données ‘gest_fact’, qu’une entreprise a créée pour stocker les données relatives aux factures qu’elle a émises : la liste des produits commercialisés par l’entreprise, la liste des factures émises par l’entreprise et le détail de chaque ligne de facture. ‘Gest_fact’ est constituée de trois tables : ‘produit’, ‘facture’ et ‘ligne_facture’. On souhaite maintenant ajouter une ligne à une facture, à l’aide d’une transaction. L’intérêt de créer une transaction pour regrouper ces instructions est de pouvoir annuler la transaction dans son ensemble en cas d’erreur, par exemple si le produit cité dans la nouvelle ligne de facture ne figure pas dans la table ‘produit’. Si le produit existe bien, en revanche, on peut valider la transaction avec un COMMIT :
BEGIN TRANSACTION;
INSERT INTO ligne_facture (nom_produit, num_facture, quantite, num_lf, statut)
VALUES ('P02', 'F010', 2, 1, 'vente directe');
-- Vérification de l'existence du produit
IF NOT EXISTS (SELECT 1 FROM produit WHERE nom_produit = ‘P02’)
BEGIN
PRINT 'Erreur : Produit inexistant.';
ROLLBACK; --Si le produit n’existe pas, on ROLLBACK
RETURN;
END;
-- Si le produit existe, on COMMIT
COMMIT;
Voici le résultat de l'exécution du code :

_
Nos formations sur https://www.apprendresql.com/
Voir autres : ALTER TABLE, CREATE TABLE, DROP TABLE, AND, AS, AUTO_INCREMENT, AVG(), BETWEEN, COUNT(), CROSS JOIN, DELETE, DISTINCT, FOREIGN KEY, FULL JOIN, GROUP BY, HAVING, IN, INNER JOIN, INSERT, INTERSECT, IS NULL, LEFT JOIN, LIKE, MAX(), MERGE, MIN(), NATURAL JOIN, OR, ORDER BY, PRIMARY KEY, RIGHT JOIN, SELECT, SUM(), UNION, UPDATE, WITH ROLLUP, GRANT, REVOKE, BEGIN TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT