When using advanced client-side transaction retries, statements issued after
SAVEPOINT are committed when
RELEASE SAVEPOINT 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.
> 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;
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
> BEGIN; UPDATE products SET inventory = 100 WHERE = '8675309'; UPDATE products SET inventory = 100 WHERE = '8675310'; COMMIT;