> ## Content Index
> Fetch the complete content index at: https://www.idriss-benbassou.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Qu’est-ce qu’une transaction SQL et quand l’utiliser ?
- URL: https://www.idriss-benbassou.com/transactions-sql-definition-quand-les-utiliser/
- Published: 2024-05-17T15:31:00.000Z
- Updated: 2026-07-19T11:17:02.000Z
- Author: Idriss BENBASSOU
- Tags: SQL, #rating-1

Si vous êtes data analyst, vous travaillez souvent en lecture seule, mais comprendre les transactions est essentiel car 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 on risque 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 WRITE`
  - `SET TRANSACTION READ ONLY`

## Prenons un exemple pour mieux comprendre le concept.

On va créer une table PETS:

```sql
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 :

```sql
INSERT INTO PETS VALUES 
(1, 'ROCKY', 4, 'John', 'Dog'),
(2, 'TITI', 2, 'Emma', 'Cat'),
(3, 'MIMI', 1, 'Sophia', 'Bird');

```

---

### COMMIT (valider)

```sql
BEGIN TRANSACTION;
DELETE FROM PETS WHERE PET_TYPE = 'Cat';
COMMIT;

```

Après COMMIT, les chats supprimés ne réapparaissent plus.

---

### ROLLBACK (annuler)

```sql
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)

```sql
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.

## Questions fréquentes

### C'est quoi une transaction en SQL ?

Une transaction regroupe plusieurs instructions SQL en une seule unité : tout passe, ou rien ne passe. Entre BEGIN et COMMIT, tes modifications restent invisibles aux autres sessions. Un ROLLBACK annule tout d'un coup.

### Quand utiliser une transaction ?

Dès que plusieurs écritures doivent rester cohérentes entre elles : un débit et un crédit, une insertion de commande et la mise à jour du stock. Si une étape échoue, la transaction protège tes données d'un état incohérent.