Les SGBD sont conçus pour supporter via les transactions les accès concurrents en lecture / écriture tout en garantissant la cohérence des données.
Transaction : ensemble d'actions ayant pour but de faire passer une base de données d'un état stable à un autre. Une transaction se doit d'être ACID :
- Atomicité : ensemble d'actions traitées comme un tout (tout ou rien),
- Cohérence : retour à un état stable et cohérent après la fin de la transaction,
- Isolation : chaque transaction est indépendante des autres,
- Durabilité : l'état de la base de données post-transaction est stable dans le temps.
Gestion des transactions
Une transaction commence avec le premier ordre LMD (INSERT, UPDATE, DELETE) et se termine par un COMMIT (validation) ou un ROLLBACK (invalidation) de l'ensemble des ordres LMD.
Seul l'utilisateur à l'origine de la transaction "voit" les modifications apportées, les autres utilisateurs ne les "voient" qu'après un COMMIT.
Par défaut Oracle est en auto-commit (tout ordre LMD est automatiquement validé), pour gérer les transactions, il faut passer en SET AUTOCOMMIT on.
La clause SAVEPOINT nom permet de créer des étapes d'invalidation, exemple :
Note : un simple ROLLBACK annule tous les SAVEPOINT et un COMMIT supprime tous les SAVEPOINT.