The SAVEPOINT cockroach_restart statement defines the intent to retry transactions using the CockroachDB-provided function for client-side transaction retries. For more information, see Transaction Retries.

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


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

Required privileges

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


After you BEGIN the transaction, you must create the savepoint to identify that if the transaction contends with another transaction for resources and "loses", you intend to use the function for client-side transaction retries:

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

When using SAVEPOINT, an application must also include functions to execute retries with ROLLBACK TO SAVEPOINT cockroach_restart.

See also