- Atomic - Enables changes to be grouped and performed as if they're a single operation--all or nothing.
- Consistent - A transaction begins and ends with valid data, even if the data is invalid during the transaction. This means that UIDs are indeed unique. For a relational database, this means that it must maintain referential integrity.
- Isolated - Each transaction executes as if it's the only one; it is independent of any other concurrent transactions. A transaction's intermediate state is not visable to operations outside of the transaction.
- Durable - Changes made by the transaction are persisted and cannot be lost, even if the resource subsequently fails.
A transaction can complete in one of two ways:
- commit - Changes made during the transaction are made permanent and cannot be undone.
- rollback - Changes made during the transaction are undone or discarded and the resource is returned to the state it held when the transaction began.
You may also be interested in my discussion: Are Transactions Necessary?