DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

/usr/man2/cat.l/rollback_to_savepoint.l.Z





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(l)]  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(l)], COMMIT [commit(l)], RELEASE SAVEPOINT [release_save-
       point(l)], ROLLBACK [rollback(l)], SAVEPOINT [savepoint(l)]

SQL - Language Statements         2005-11-05           ROLLBACK TO SAVEPOINT()

Man(1) output converted with man2html