Using explicit transactions
Transactions define a boundary: anything (and everything) inside a transaction is either guaranteed to fail or succeed. Imagine a bank transfer from one bank to another. If you think of the steps involved, they are as follows:
- Some amount is withdrawn from a bank account.
- The same amount is deposited in another bank account.
One cannot exist without the other: both actions must either occur or neither of them can occur in isolation.
Transactions have what is commonly referred to as the ACID properties. This acronym is explained in the following sections.
Atomic
The execution of any transaction should either have the full intended effect or no effect at all. The results should be either complete (commit
), or nothing should happen (roll back
).
Consistent
Any transaction is a transition of state in an application, and therefore should preserve a consistent version of the application. For example, when updating a many-to-many relationship, both the foreign key and the reference...