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.
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.
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.
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
The result of successfully committing a group of transactions is inconsistent with all possible orderings of running those transactions one at a time.