Définition
Avec REPEATABLE READ quand on lit deux fois la même ligne dans une même transaction on obtient la même valeur
| Niveau d’isolation | Lecture sale (Dirty read) | Lecture non répétable (Non-repeatable read) | Fantôme (Phantom) | Mise à jour perdue (Lost update) |
|---|---|---|---|---|
| READ UNCOMMITTED | ❌ Autorisée | ❌ Autorisée | ❌ Autorisée | ❌ Autorisée |
| READ COMMITTED | ✅ Empêchée | ❌ Autorisée | ❌ Autorisée | ❌ Autorisée |
| REPEATABLE READ | ✅ Empêchée | ✅ Empêchée | ❌ Autorisée | ✅ Empêchée |
Illustration

Problème 1
-
résout le problème des lectures sales + lecture non répétable
-
MAIS, Bob à écrasée silencieusement la valeur d’Alice (lost update)
En effet, suivant l’implémentation du REPEATABLE READ on prévient ou pas le lost update. Certain SGBD vont faire un SELECT ... FOR UPDATE avec REPEATABLE READ => pas de lost update

Problème 2
Néanmoins, nous avons un second problème

- Dans une même transaction, nous obtenons deux résultats différents; phantom read