RELEASE SAVEPOINT cockroach_restart

2020-02-16

When using client-side transaction retries, the RELEASE SAVEPOINT cockroach_restart statement commits the transaction.

If statements in the transaction generated any non-retryable errors, RELEASE SAVEPOINT cockroach_restart is equivalent to ROLLBACK, which aborts the transaction and discards all updates made by its statements.

Despite committing the transaction, you must still issue a COMMIT statement to prepare the connection for the next transaction.

{{site.data.alerts.callout_danger}}CockroachDB’s SAVEPOINT implementation only supports the cockroach_restart savepoint and does not support all savepoint functionality, such as nested transactions.{{site.data.alerts.end}}

Synopsis

{% include {{ page.version.version }}/sql/diagrams/release_savepoint.html %}

Required privileges

No privileges are required to release a savepoint. However, privileges are required for each statement within a transaction.

Examples

Commit a Transaction

After declaring SAVEPOINT cockroach_restart, commit the transaction with RELEASE SAVEPOINT cockroach_restart and then prepare the connection for the next transaction with COMMIT.

> BEGIN;

> SAVEPOINT cockroach_restart;

> UPDATE products SET inventory = 0 WHERE sku = '8675309';

> INSERT INTO orders (customer, sku, status) VALUES (1001, '8675309', 'new');

> RELEASE SAVEPOINT cockroach_restart;

> COMMIT;

{{site.data.alerts.callout_danger}}This example assumes you're using client-side intervention to handle transaction retries.{{site.data.alerts.end}}

See also