I have been studying nested transactions based on the following general theorem:
1. Parent can create children subtasks; children might execute sequentially or concurrently; parent waits until all children complete (no communication between parent and children)
2. Each subtransaction (together with its descendants) is isolated with respect to each sibling (and its descendants). Hence, siblings are serializable, but order is note determined and nested transaction is non-deterministic.
3. Concurrent nested transactions are serializable.
4. A subtransaction is atomic. It can abort or commit independently of other subtransactions. Commit is conditional on commit of parent (since child task is a subtask of a parent task). Abort causes abort of all subtransaction's children.
5. Nested transaction commits when root commits. At that point updates of committed subtransactions are made durable.
6. Individual subtransactions are not necessarily consistent, but nested transaction as a whole is consistent.
However, I have been informed that Sybase does not properly follow these guidelines and implement nested transactions accordingly. I was hoping that someone could let me know of the differences between Sybase’s implementation of nested transactions and the above definition.