Subject Re: [IBO] Rollback to a point, not all the changes
Author Markus Ostenried
At 22:34 Monday, 08.12.2003 +0000, you wrote:
>I am making sequential changes to a database:
>
>Set A Changes
>Set B Changes
>Set C Changes
>
>if in the middle of making Set C Changes I find that I want to
>rollback, but only to those belonging to set C, I want to keep Set B
>Changes.
>
>Is tehre a way to do this?

Hi Ed,

Firebird from version 1.5 (current version is 1.5 release candidate 7) will
support "Savepoints" that should do exactly what you want.
This is from IBObjects 4.2If release notes:

<quote>
Added LosePoint method to the TIB_Transaction component. This is along the
same lines as a SavePoint call but instead of doing a commit_retaining it
does a rollback_retaining (for supporting versions of InterBase/Firebird).
It is the same as RollbackRetaining except it doesn't stipulate that all
datasets must resolve there dataset state if in an edit mode. Thus, it
won't cause a cancel. This has been added and utilized for the clearing of
pessimistic record locks so that they are cleared in a way that will allow
a competing edit that is waiting to be accepted instead of deadlocked.

Added support for the SAVEPOINT statement type so that named savepoints can
be worked with
</quote>

Also, search the Firebird 1.5 release notes "SAVEPOINT".

HTH,
Markus