DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

rollback_to_savepoint(5)





NAME

       ROLLBACK TO SAVEPOINT - roll back to a savepoint


SYNOPSIS

       ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] 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  SAVEPOINT  implicitly  destroys  all savepoints that were
       established after the named savepoint.


PARAMETERS

       savepoint_name
              The savepoint to roll back to.


NOTES

       Use RELEASE SAVEPOINT [release_savepoint(5)]  to  destroy  a  savepoint
       without discarding the effects of commands executed after it was estab-
       lished.

       Specifying a savepoint name that has not been established is an error.

       Cursors have somewhat non-transactional behavior with respect to  save-
       points.  Any  cursor  that  is opened inside a savepoint will be closed
       when the savepoint is rolled back. If a  previously  opened  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).  Closing a cursor is
       not undone by rolling back, either.  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 SAVEPOINT, the cursor can
       no longer be used.


EXAMPLES

       To  undo  the  effects  of the commands executed after my_savepoint was
       established:

       ROLLBACK TO SAVEPOINT 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 SAVEPOINT foo;

       FETCH 1 FROM foo;
        ?column?
       ----------
               2

       COMMIT;


COMPATIBILITY

       The SQL standard specifies that the key word  SAVEPOINT  is  mandatory,
       but PostgreSQL and Oracle allow it to be omitted. SQL allows only WORK,
       not TRANSACTION, as a noise word  after  ROLLBACK.  Also,  SQL  has  an
       optional  clause  AND  [ NO ] CHAIN which is not currently supported by
       PostgreSQL. Otherwise, this command conforms to the SQL standard.


SEE ALSO

       BEGIN [begin(5)], COMMIT [commit(l)], RELEASE SAVEPOINT  [release_save-
       point(l)], ROLLBACK [rollback(l)], SAVEPOINT [savepoint(l)]

SQL - Language Statements         2008-06-08           ROLLBACK TO SAVEPOINT()

Man(1) output converted with man2html