Committing or aborting the transaction with the fRetaining flag in ITransaction::Commit or ITransaction::Abort set to TRUE commits or aborts and implicitly starts a new unit of work. If the fRetaining flag is set to FALSE, the transaction is committed or aborted with no new unit of work created—any new work done on the session is outside the scope of a transaction. This is sometimes referred to as auto-commit or implicit mode. Attempting to explicitly commit or abort a transaction when there is no outstanding transaction returns an error.
Commands are always fully functional after a retaining commit or abort. The command also remains active in the case of a nonretaining commit or abort, but the prepared state may be lost.