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

  
 
  

home | help
RELEASE SAVEPOINT(7)	  PostgreSQL 18.6 Documentation     RELEASE SAVEPOINT(7)

NAME
     RELEASE_SAVEPOINT - release a previously defined savepoint

SYNOPSIS
     RELEASE [ SAVEPOINT ] savepoint_name

DESCRIPTION
     RELEASE  SAVEPOINT  releases  the named savepoint and all active savepoints
     that were created after the named savepoint, and frees their resources. All
     changes made since the creation of the savepoint that  didn't  already  get
     rolled  back  are	merged into the transaction or savepoint that was active
     when the named savepoint was created. Changes made after RELEASE  SAVEPOINT
     will also be part of this active transaction or savepoint.

PARAMETERS
     savepoint_name
	 The name of the savepoint to release.

NOTES
     Specifying a savepoint name that was not previously defined is an error.

     It  is  not  possible  to release a savepoint when the transaction is in an
     aborted state; to do that, use  ROLLBACK  TO  SAVEPOINT  (ROLLBACK_TO_SAVE-
     POINT(7)).

     If  multiple  savepoints have the same name, only the most recently defined
     unreleased one is released. Repeated commands  will  release  progressively
     older savepoints.

EXAMPLES
     To establish and later release a savepoint:

	 BEGIN;
	     INSERT INTO table1 VALUES (3);
	     SAVEPOINT my_savepoint;
	     INSERT INTO table1 VALUES (4);
	     RELEASE SAVEPOINT my_savepoint;
	 COMMIT;

     The above transaction will insert both 3 and 4.

     A more complex example with multiple nested subtransactions:

	 BEGIN;
	     INSERT INTO table1 VALUES (1);
	     SAVEPOINT sp1;
	     INSERT INTO table1 VALUES (2);
	     SAVEPOINT sp2;
	     INSERT INTO table1 VALUES (3);
	     RELEASE SAVEPOINT sp2;
	     INSERT INTO table1 VALUES (4))); -- generates an error

     In this example, the application requests the release of the savepoint sp2,
     which  inserted  3.  This	changes the insert's transaction context to sp1.
     When the statement attempting to insert value 4 generates an error, the in-
     sertion of 2 and 4 are lost because they are in the same,	now-rolled  back
     savepoint,  and value 3 is in the same transaction context. The application
     can now only choose one of these two commands,  since  all  other	commands
     will be ignored:

	 ROLLBACK;
	 ROLLBACK TO SAVEPOINT sp1;

     Choosing  ROLLBACK  will abort everything, including value 1, whereas ROLL-
     BACK TO SAVEPOINT sp1 will retain value 1 and allow the transaction to con-
     tinue.

COMPATIBILITY
     This command conforms to the SQL standard. The standard specifies that  the
     key word SAVEPOINT is mandatory, but PostgreSQL allows it to be omitted.

SEE ALSO
     BEGIN(7),	COMMIT(7), ROLLBACK(7), ROLLBACK TO SAVEPOINT (ROLLBACK_TO_SAVE-
     POINT(7)), SAVEPOINT(7)

PostgreSQL 18.6 		      2026		    RELEASE SAVEPOINT(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RELEASE_SAVEPOINT&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help