The capability to handle nested transactions properly is a prerequisite for true component-based application architectures.
In a component-based encapsulated architecture, nested transactions can occur without the programmer knowing it.
If a call to such a component function is made inside a BEGIN - COMMIT bracket, nested transactions occur.
Since popular databases like MySQL[1] do not allow nesting BEGIN - COMMIT brackets, a framework or a transaction monitor is needed to handle this.
When we speak about nested transactions, it should be made clear that this feature is DBMS dependent and is not available for all databases.