Provided by: postgresql-client-8.0_8.0.7-2build1_i386 bug

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(7)]  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 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:2003  standard  specifies  that  the  key  word  SAVEPOINT  is
       mandatory,  but  PostgreSQL and Oracle allow it to be omitted. SQL:2003
       allows only WORK, not TRANSACTION, as  a  noise  word  after  ROLLBACK.
       Also,  SQL:2003  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(7)],    COMMIT    [commit(l)],    RELEASE    SAVEPOINT
       [release_savepoint(l)],     ROLLBACK      [rollback(l)],      SAVEPOINT
       [savepoint(l)]