RELEASE SAVEPOINT

savepoints

releasing

RELEASE SAVEPOINT

7

SQL - Language Statements

RELEASE SAVEPOINT

destroy a previously defined savepoint

RELEASE \[ SAVEPOINT \]

savepoint\_name

Description
===========

`RELEASE SAVEPOINT` destroys a savepoint previously defined in the
current transaction.

Destroying a savepoint makes it unavailable as a rollback point, but it
has no other user visible behavior. It does not undo the effects of
commands executed after the savepoint was established. (To do that, see
[???](#sql-rollback-to).) Destroying a savepoint when it is no longer
needed allows the system to reclaim some resources earlier than
transaction end.

`RELEASE SAVEPOINT` also destroys all savepoints that were established
after the named savepoint was established.

Parameters
==========

savepoint\_name

:   The name of the savepoint to destroy.

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.

If multiple savepoints have the same name, only the one that was most
recently defined is released.

Examples
========

To establish and later destroy 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.

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
========
