Exercice 41 / 60

Transactions

Dans 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ème
Une transaction n'a que deux issues : COMMIT valide l'ensemble des opérations, ROLLBACK les annule toutes

Exemple (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 tout

Astuce : currval('nom_de_la_sequence') renvoie le dernier id généré pour cette table dans ta session. 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).

cours
idnomprofesseursallecreditsduree_heures
etudiants
idnomprenomemailnotevilleagedate_inscriptiondepartementcompetences
inscriptions
idetudiant_idcours_iddate_inscription
query.sql

Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →