It’s an abstraction that balances the simplicity and correctness of serial data access (a single query at a time) against the performance and perils of concurrency (multiple queries running in parallel).
I thought the definition was slightly profound in an elegant sort of way and decided to share.

Transactions are a mechanism to gracefully recover from errors. Is it any more complex than that?
@Johnny Hall
It depends. If you only care about the transaction as the abstraction, that’s probably good enough. Although, that just goes to show how subtle the concept of a transaction is.
Not only does it allow you to recover from errors, but it does much to prevent them as well (ie…isolation). Error recovery is really just the tip of the iceburg.
It is good the read the words transaction, concurrency, performance and share in the same sentence! You will love the xstm project: http://xstm.net
@Cyprien
Way cool! I’ll definitely have to poke around with this..