Lecture fantôme phantom read
Une transaction exécute deux fois la même requête sur une plage et obtient un nombre de lignes différent — parce qu'une autre transaction a inséré (INSERT) de nouvelles lignes correspondantes.
À la différence de la lecture non répétable ordinaire (la même ligne modifiée), il s'agit ici de lignes NOUVELLES. Empêchée par la Snapshot Isolation et par Serializable. Le standard SQL définit le fantôme comme l'anomalie qui sépare « Repeatable Read » de « Serializable ». Le « Repeatable Read » de Postgres implémente en réalité la Snapshot Isolation (elle empêche le fantôme en lecture, mais pas le write skew). MySQL InnoDB utilise des gap locks pour empêcher aussi le fantôme en Repeatable Read.