使用 client-side transaction retries(客户端事务重试)时, 可用 RELEASE SAVEPOINT cockroach_restart 语句提交事务。

如果事务中的语句 生成了不可重试的错误, RELEASE SAVEPOINT cockroach_restart 等同于执行了 ROLLBACK,会丢弃事务中所有语句所做的更改。

尽管事务已经完成,你仍然需要执行 COMMIT 语句为下一个事务做准备。

警告:CockroachDB的SAVEPOINT 实现仅仅支持 cockroach_restart保存点, 并不支持所有的保存点,例如嵌套事务。

概要

图片

所需权限

释放保存点不需要任何 权限,但是事务中的语句需要拥有对应权限。

例子

提交一个事务

在声明 SAVEPOINT cockroach_restart 之后,用 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;

注意:这个例子假设你在使用client-side transaction retries(客户端事务重试)。

其他