A transaction must be:
- Atomic - It is one unit of work and does not dependent on previous and following transactions.
- Consistent - Data is either committed or roll back, no ?in-between? case where something has been updated and something hasn't.
- Isolated - no transaction sees the intermediate results of the current transaction).
- Durable - the values persist if the data had been committed even if the system crashes right after.