Phantom Read
Eine Transaktion führt dieselbe Bereichsabfrage zweimal aus und erhält unterschiedliche Zeilenzahlen — weil eine andere Transaktion neue passende Zeilen per INSERT eingefügt hat.
Unterscheidet sich vom gewöhnlichen Non-Repeatable Read (dieselbe Zeile wird verändert) dadurch, dass es NEUE Zeilen sind. Wird durch Snapshot Isolation und Serializable verhindert. Der SQL-Standard definiert das Phantom als genau die Anomalie, die "Repeatable Read" von "Serializable" unterscheidet. Postgres' "Repeatable Read" implementiert in Wirklichkeit Snapshot Isolation (verhindert Phantome beim Lesen, aber nicht Write-Skew). MySQL InnoDB nutzt Gap Locks, um Phantome auch unter Repeatable Read zu verhindern.