Or another route is change how sqlDB works
Make it more compatible with Delphi's DB-Express.
I am not expert for DBX, but IMO DBX works like this:
1. transactions are not started implicitly
2. if transaction is not explicitly started then when ApplyUpdates, transaction is started and if no errors occurc during applying updates transaction is commited after applyupdates (something like batch-autocommit mode)
3. if transaction is started explicitly (by calling StartTransaction) then transaction is under control of user (something like explicit transactions) and user must Commit or Rollback
Plus:
- Signal if connection support multiple transactions per connection
- Count transactions (StartTransaction +1, Commit,Rollback -1)
Edit:
But AFAIU DBX does not support "virtual nested" transactions.
Transactions can be nested only if driver support it (property MultipleTransactionsSupported)