The ROLLBACK 语句 中止当前 事务, 丢弃事务中语句所有的更新 。

当使用 事务重试机制, 使用 ROLLBACK TO SAVEPOINT cockroach_restart 语句去重试一个事务 (identified via the 40001 error code or retry transaction 以上报错的事务), 然后事务中包含的语句将会重新执行。

概要

图片

所需权限

回滚事务不需要任何 权限。 然而,事务中执行的语句需要权限。

Parameters

参数 描述
TO SAVEPOINT cockroach_restart 若使用了 client-side transaction retries 机制,当事务返回 40001 / retry transaction 错误时,使用该语句去重试事务。

示例

回滚一个事务

当使用ROLLBACK 代替 COMMIT后,你将会看到事务进行回滚。

SELECT * FROM accounts;

+----------+---------+
|   name   | balance |
+----------+---------+
| Marciela |    1000 |
+----------+---------+
BEGIN;

UPDATE accounts SET balance = 2500 WHERE name = 'Marciela';

ROLLBACK;

SELECT * FROM accounts;

+----------+---------+
|   name   | balance |
+----------+---------+
| Marciela |    1000 |
+----------+---------+

重试一个事务

使用 客户端事务重试机制时。当客户端返回报错 (40001 / retry transaction) 错误时,使用ROLLBACK TO SAVEPOINT cockroach_restart 语句去回滚事务。

ROLLBACK TO SAVEPOINT cockroach_restart;

有关在应用程序中重试事务的示例,请参阅我们的 Build an App with CockroachDB教程中的事务代码示例。

其他