I have some trouble with supporting nested transaction because so far only
SQLite LSM extension (which is only alpha quality) support them.
It's been pointed out on Schemepersist that savepoints (which are widely supported including SQLite) support the purposes of nested transactions, though a little tricky to use because there is no explicit commit. But because they are named you can use them to support arbitrary depth of transactions.