Bonjour, si vous êtes data analyst, vous travaillez souvent en lecture seule, mais comprendre les transactions est essentiel : elles garantissent l’intégrité et la cohérence des données, surtout quand plusieurs opérations ou utilisateurs accèdent à la même base en parallèle. Sans elles : risques de conflits, d’incohérences et de corruption.
Propriétés ACID
Les transactions ont quatre propriétés importantes, résumées par l’acronyme ACID :
- Atomicité : soit toutes les opérations réussissent, soit aucune n’est appliquée. En cas de problème, on annule tout et on revient à l’état d’avant.
- Cohérence : après une transaction réussie, la base de données reste correcte et respecte toutes ses règles.
- Isolation : chaque transaction se déroule comme si elle était seule, sans être perturbée par les autres.
- Durabilité : une fois la transaction validée, les changements sont enregistrés et restent, même en cas de panne du système.
Les commandes transactionnelles s’appliquent aux commandes suivantes : INSERT, UPDATE, MERGE, DELETE.
Les commandes DDL (création/suppression de tables) sont auto-validées.
BEGIN TRANSACTION <nom>: démarre une transaction explicite.COMMIT: valide définitivement toutes les modifications.ROLLBACK: annule toutes les modifications depuis le début ou jusqu’à un SAVEPOINT.SAVEPOINT <nom>: point de retour intermédiaire.ROLLBACK TO <nom>: revient à un SAVEPOINT donné.RELEASE SAVEPOINT <nom>: supprime un SAVEPOINT (on ne peut plus y revenir).SET TRANSACTION: définit les propriétés de la transaction (nom, mode lecture/écriture ou lecture seule) :SET TRANSACTION READ WRITESET TRANSACTION READ ONLY
Prenons un exemple pour mieux comprendre le concept.
On va créer une table PETS:
CREATE TABLE PETS (
ID INT NOT NULL,
PET_NAME VARCHAR(20) NOT NULL,
PET_AGE INT NOT NULL,
OWNER_NAME VARCHAR(25),
PET_TYPE VARCHAR(10),
PRIMARY KEY (ID)
);
Insertion des données :
INSERT INTO PETS VALUES (1, 'ROCKY', 4, 'John', 'Dog'),(2, 'TITI', 2, 'Emma', 'Cat'),(3, 'MIMI', 1, 'Sophia', 'Bird');
COMMIT (valider)
BEGIN TRANSACTION;
DELETE FROM PETS WHERE PET_TYPE = 'Cat';
COMMIT;
Après COMMIT, les chats supprimés ne réapparaissent plus.
ROLLBACK (annuler)
DELETE FROM PETS WHERE PET_NAME = 'Buddy';ROLLBACK;
La suppression de Buddy est annulée, il revient dans la table.
SAVEPOINT + ROLLBACK TO (annuler partiellement)
SAVEPOINTREMOVE_MITTENS;
DELETE FROM PETS WHERE PET_NAME = 'Mittens';
SAVEPOINT REMOVE_TWEETY;
DELETE FROM PETS WHERE PET_NAME = 'Tweety';
ROLLBACK TO REMOVE_TWEETY;
On revient à l’état du SAVEPOINT REMOVE_TWEETY : Mittens reste supprimée, Tweety est restauré.
RELEASE SAVEPOINT
RELEASE SAVEPOINT REMOVE_TWEETY;
On ne peut plus faire ROLLBACK TO REMOVE_TWEETY.
Ces mécanismes permettent de contrôler précisément quelles modifications sont conservées ou annulées dans une base de données.

