AutoCommit and StartTransaction


If AutoCommit is true then once a dataset posts its change it is physically committed on the server by internally calling the SavePoint method.

The AutoCommit
property shouldn't be understood as IBO automatically making sure that commits are taking place so as to prevent a physical transaction from staying open for too long. It does help make it more possible but it is not a guarantee. IBO automatically performs the "auto commit" behavior of making sure a physical transaction isn't unnecessarily kept around any longer than necessary. This is called OAT management.

Calling the StartTransaction
method temporarily suspends the AutoCommit behavior so that posted changes will remain in an uncommitted state and able to be rolled back if necessary.

IOW, even though AutoCommit
is true, if you are in an explicit transaction by calling StartTransaction, once a change is posted then a logical transaction remains active until Commit, CommitRetaining, Rollback or RollbackRetaining, etc. is called. Then, at this point the logical and explicit transaction will end.

If a call is made to Commit
or Rollback then the physical transaction also ends. Be careful since this may also automatically close any open datasets (depending on the dataset's CommitAction setting).