Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ROLLBACK TO SAVEPOINT(7)PostgreSQL 9.6.3 DocumentationROLLBACK TO SAVEPOINT(7)

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 a savepoint	will be	closed
       when the	savepoint is rolled back. If a previously opened cursor	is
       affected	by a FETCH or MOVE command inside a savepoint that is later
       rolled back, the	cursor remains at the position that FETCH left it
       pointing	to (that is, the cursor	motion caused by FETCH is not rolled
       back). Closing a	cursor is not undone by	rolling	back, either. However,
       other side-effects caused by the	cursor's query (such as	side-effects
       of volatile functions called by the query) are rolled back if they
       occur during a savepoint	that is	later rolled back. A cursor whose
       execution causes	a transaction to abort is put in a cannot-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(7), COMMIT(7), RELEASE SAVEPOINT (RELEASE_SAVEPOINT(7)),
       ROLLBACK(7), SAVEPOINT(7)

PostgreSQL 9.6.3		     2017	      ROLLBACK TO SAVEPOINT(7)

NAME | SYNOPSIS | DESCRIPTION | PARAMETERS | NOTES | EXAMPLES | COMPATIBILITY | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=ROLLBACK_TO_SAVEPOINT&sektion=7&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help