ROLLBACK TO
SQL - Language Statements
ROLLBACK TO
roll back to a savepoint
ROLLBACK TO
savepoints
rolling back
ROLLBACK TO savepoint_name
Description
Roll back all commands that were executed after the savepoint was
established. The savepoint remains valid and can be rolled back to
again later, if needed.
ROLLBACK TO> implicitly destroys all savepoints that
were established after the named savepoint.
Parameters
savepoint_name>
The savepoint to roll back to.
Notes
Use to
destroy a savepoint without discarding the effects of commands executed
after it was established.
Specifying a savepoint name that has not been established is an error.
Cursors have somewhat non-transactional behavior with respect to
savepoints. Any cursor that is opened inside the savepoint is not closed
when the savepoint is rolled back. If a cursor is affected by a
FETCH> command inside a savepoint that is later rolled
back, the cursor position remains at the position that FETCH>
left it pointing to (that is, FETCH> is not rolled back).
A cursor whose execution causes a transaction to abort is put in a
can't-execute state, so while the transaction can be restored using
ROLLBACK TO>, the cursor can no longer be used.
Examples
To undo the effects of the commands executed after my_savepoint
was established:
ROLLBACK TO my_savepoint;
Cursor positions are not affected by savepoint rollback:
BEGIN;
DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;
SAVEPOINT foo;
FETCH 1 FROM foo;
?column?
----------
1
ROLLBACK TO foo;
FETCH 1 FROM foo;
?column?
----------
2
COMMIT;
Compatibility
This command is fully SQL standard conforming.
See Also