Subject Re: [firebird-support] CommitRetaining
Author Helen Borrie
At 07:18 PM 27/10/2004 -0400, you wrote:

>"Call CommitRetaining to permanently store to the database server all
>updates, insertions, and deletions of data associated with the current
>transaction and then retain the transaction context."
>What does this mean? What happens on a rollback?

Once CommitRetaining is executed, the data are committed. You can't both
commit and roll back the same transaction.

CommitRetaining is "commit without cleanup". It was introduced by Borland
as a way to "dumb down" database development, enable "autocommit" with
InterBase and make it seem to Delphi users that they were using Paradox
(which doesn't know about transactions --- Post == Commit).

CommitRetaining has its "pluses" but it should be used with careful
attention to hard-committing at reasonable intervals, to avoid blowing RAM
on the server from having transactions for which no cleanup is possible.

Most Delphi data-access interfaces do AutoCommit/CommitRetaining by
default. You're going to have the crashing problems you have been
reporting as long as you don't take explicit control of transaction management.