When a fault happens in the middle of a write, and the database either undos or aborts it completely, as if the write never started, leaving no partially written data.

Not to be confused with atomic in Multi Threading (which is more like isolation)


data remains in a valid state before and after a transaction.


No race condition in concurrent accesses.
Use Optimistic Concurrency Control or MVCC

dirty read

A transaction reads data written by a concurrent uncommitted transaction.
Since it is uncommitted it may rollback (and leave to a wrong data being read), leading to a dirty read.

nonrepeatable read

A transaction re-reads data it has previously read and finds that data has been modified by another transaction (that committed since the initial read).
Leading to a unmatched record.

phantom read

A transaction re-executes a query returning a set of rows that satisfy a search condition and finds that the set of rows satisfying the condition has changed due to another recently-committed transaction.

  • Non-repeatable reads concern a single row being updated or deleted by another transaction
  • Phantom reads involve new rows being added or existing rows being removed

serialization anomaly

The result of successfully committing a group of transactions is inconsistent with all possible orderings of running those transactions one at a time.