XamSQL — la salle de sport SQL des francophones

Avancé · 20 min

DML et transactions : modifier des données sans tout casser

INSERT, UPDATE et DELETE pour modifier des données, et BEGIN/COMMIT/ROLLBACK pour garantir que plusieurs modifications liées réussissent ou échouent ensemble.

Contexte

Jusqu'ici, chaque requête ne faisait que LIRE les données — jamais les changer. Mais une vraie base vit : un client s'inscrit, un prix change, une commande est annulée. INSERT, UPDATE et DELETE modifient les données en place, et une transaction garantit qu'un ensemble de modifications liées réussit intégralement, ou pas du tout.

Explication

INSERT ajoute une ou plusieurs lignes, UPDATE modifie les lignes qui correspondent à une condition, DELETE en supprime — les trois sont irréversibles une fois validés : sans WHERE, UPDATE et DELETE s'appliquent à TOUTE la table.

INSERT INTO table (col1, col2) VALUES (v1, v2);
UPDATE table SET col1 = v1 WHERE condition;
DELETE FROM table WHERE condition;

Une transaction regroupe plusieurs instructions avec BEGIN … COMMIT : soit elles réussissent toutes, soit — en cas d'erreur avant COMMIT — ROLLBACK annule tout ce qui a été fait depuis BEGIN. Sans BEGIN/COMMIT explicite, chaque instruction est validée séparément, immédiatement : impossible de revenir en arrière si la deuxième d'un groupe de trois échoue.

Pièges à connaître :

Exemple guidé

Sur la base boutique, annuler une commande payée par erreur suppose de mettre à jour son statut ET de supprimer le paiement associé — les deux doivent réussir ensemble :

BEGIN;
UPDATE commandes SET statut = 'annulee' WHERE id = 1;
DELETE FROM paiements WHERE commande_id = 1;
COMMIT;

Sans transaction, un problème entre les deux instructions laisserait la commande annulée mais son paiement toujours enregistré — une incohérence du même genre que celle que le LEFT JOIN … IS NULL de la leçon sur NULL sert justement à détecter après coup.

À retenir

INSERT ajoute, UPDATE modifie, DELETE supprime — chacun peut toucher toute la table sans WHERE. BEGIN … COMMIT valide un groupe d'instructions ensemble ; ROLLBACK l'annule avant COMMIT. Une transaction protège contre un échec partiel entre deux modifications liées.

Exercices de cette leçon

Faire les exercices →