1. first there is one thing should be cleared, there is no nested transaction in COM+, i.e., client create object A (required new), which in turn create object B (required new), then two transactions will be created. These two transactions have no inter-relationship, these are flat transaction, not nested transaction.the net effect of SetComplete/SetAbort is VOTE, when the root object vote, then the whole transaction will be commit/abort. So the intermediate objects, such as DB objects in your scenario won't know the transaction result.
if you want the caller of DB object don't go ahead when DB object vote abort, you can return some errors from DB objects to their callers.