Beware of bugs in the above code; I have only proved it correct, not tried it. Donald Knuth
Atomicity, Consistency, Isolation, Durability is a set of properties that guarantee that database transactions are processed reliably.
Atomicity requires that each transaction be completed successfully or nothing execute. A transaction consists of many steps. If any step fails, all the transactions are rolled back.
The consistency property ensures that any transaction will bring the database from one valid state to another. The database will move from one consistent state to another, if the transaction succeeds and remain in the original state, if the transaction fails.
The isolation property ensures that the concurrent execution of transactions results in a system state that would be obtained if transactions were executed serially.
The durability property ensures that once a transaction has been committed, it will remain in persistent storage.