Les transactions

PostgreSQL est une base de données transactionelle. Ce qui signifie qu’une transaction est atomique.

Une transaction est soit:

tutorial=> select * from eleves where id = 13;
 id |    nom    |  prenom  | classe | derniere_annee
----+-----------+----------+--------+----------------
 13 | Mitterand | François |        |
(1 row)

tutorial=> begin;
BEGIN
tutorial=> update eleves set classe = 1 where id = 13;
UPDATE 1
tutorial=> select * from eleves where id = 13;
 id |    nom    |  prenom  | classe | derniere_annee
----+-----------+----------+--------+----------------
 13 | Mitterand | François |      1 |
(1 row)

Pendant ce temps là dans une autre instance connectée à la même base:

tutorial=> select * from eleves where id = 13;
 id |    nom    |  prenom  | classe | derniere_annee
----+-----------+----------+--------+----------------
 13 | Mitterand | François |        |
(1 row)

Tant que la transaction n’est pas validée, les modifications ne sont pas visibles par les autres instances.

tutorial=> commit;
COMMIT

Désormais, la modification est visible par toutes les instances.

On peut annuler une transaction en cours avec la commande rollback;. Toutes les commandes depuis la commande begin; sont alors annulées.

index suite…