ConsigneDans une transaction (BEGIN ... COMMIT), insère un étudiant ('Pierre', note 14) puis une inscription qui le relie au cours 1, de façon atomique. Récupère l'id du nouvel étudiant via la séquence de la table (currval).
Une transaction groupe plusieurs opérations en un tout : soit toutes réussissent, soit aucune (principe « tout ou rien »).
Syntaxe
BEGIN; ... opérations ...COMMIT; -- valide définitivement-- ROLLBACK; -- annule tout en cas de problèmeExemple (clients + commandes) :
BEGIN; INSERT INTO clients (nom, ville) VALUES ('Dupont', 'Lille'); INSERT INTO commandes (client_id, montant) VALUES (currval('clients_id_seq'), 250);COMMIT;-> les deux insertions sont liées ; si l'une échoue, on annule toutAstuce : currval('nom_de_la_sequence') renvoie le dernier id que TA session vient d'obtenir de cette séquence. Il ne lit pas la table : tant qu'aucun insert (ou nextval) n'a été fait dans la session en cours, il ne renvoie pas le plus grand id existant, il échoue avec « currval of sequence ... is not yet defined in this session ». C'est pour cela qu'il s'écrit juste après le premier insert, et c'est comme ça qu'on relie la 2e ligne à la 1re qu'on vient d'insérer (ici la séquence de etudiants s'appelle etudiants_id_seq).
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →