Yolinux.com

rollback_to_savepoint manpage

Search topic Section


ROLLBACK TO SAVEPOINT()		 SQL Commands	       ROLLBACK TO SAVEPOINT()



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



SQL - Language Statements	  2010-12-14	       ROLLBACK TO SAVEPOINT()