COMMIT语句用于提交当前事务,或者在使用客户端事务重试时,清除连接以允许新事务开始。

使用客户端事务重试时,在发出RELEASE SAVEPOINT cockroach_restart而不是COMMIT时,将提交SAVEPOINT cockroach_restart之后发出的语句。 但是,你仍必须发出COMMIT语句以清除下一个事务的连接。

对于不可重试的事务,如果事务中的语句生成了任何错误,则COMMIT等效于ROLLBACK,它会中止事务并丢弃其语句所做的所有更新。

概要

图片

所需权限

提交事务不需要任何特权。 但是,事务中的每个语句都需要特定权限。

别名

在CockroachDB中,ENDCOMMIT语句的别名。

示例

提交一个事务

如何提交事务取决于应用程序处理事务重试的方式。

客户端可重试事务

使用客户端事务重试时,语句由RELEASE SAVEPOINT cockroach_restart提交。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;

此示例假设你正在使用客户端介入来处理事务重试。

自动重试的事务

如果你正在使用CockroachDB可自动重试的事务(例如在单个batch中发送所有语句),使用COMMIT来提交事务。

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

See Also