COMMIT

2020-02-16

The COMMIT statement commits the current transaction or, when using client-side transaction retries, clears the connection to allow new transactions to begin.

When using client-side transaction retries, statements issued after SAVEPOINT cockroach_restart are committed when RELEASE SAVEPOINT cockroach_restart is issued instead of COMMIT. However, you must still issue a COMMIT statement to clear the connection for the next transaction.

For non-retryable transactions, if statements in the transaction generated any errors, COMMIT is equivalent to ROLLBACK, which aborts the transaction and discards all updates made by its statements.

Synopsis

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

Required privileges

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

Aliases

In CockroachDB, END is an alias for the COMMIT statement.

Example

Commit a transaction

How you commit transactions depends on how your application handles transaction retries.

Client-side retryable transactions

When using client-side transaction retries, statements are committed by RELEASE SAVEPOINT cockroach_restart. COMMIT itself only clears the connection for the next transaction.

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

Automatically retried transactions

If you are using transactions that CockroachDB will automatically retry (i.e., all statements sent in a single batch), commit the transaction with COMMIT.

> BEGIN; UPDATE products SET inventory = 100 WHERE = '8675309'; UPDATE products SET inventory = 100 WHERE = '8675310'; COMMIT;

See also