Skip to content
Preptima
hardConceptScenarioMidSeniorStaff

Walk me through the transaction isolation levels and which anomalies each one permits.

6 min readUpdated 2026-08-15

Answer

Short answer

Each level is defined by the anomalies it allows: READ COMMITTED permits non-repeatable reads and phantoms, PostgreSQL's REPEATABLE READ is snapshot isolation so it prevents both yet still permits write skew, and only SERIALIZABLE rules out all four.

Was this answer helpful?

Likely follow-ups

  • Why can PostgreSQL never produce a dirty read, even if you ask for READ UNCOMMITTED?
  • How does SERIALIZABLE Snapshot Isolation detect a conflict that snapshot isolation cannot?
  • What breaks about SELECT ... FOR UPDATE when the anomaly involves rows that do not exist yet?
  • Why do InnoDB gap locks cause deadlocks that the same workload avoids under READ COMMITTED?

Related questions

Further reading