Skip to content

Latest commit

 

History

History
84 lines (59 loc) · 1.73 KB

sql-statement-rollback.md

File metadata and controls

84 lines (59 loc) · 1.73 KB
title summary aliases
ROLLBACK
TiDB 数据库中 ROLLBACK 的使用概况。
/docs-cn/dev/sql-statements/sql-statement-rollback/
/docs-cn/dev/reference/sql/statements/rollback/

ROLLBACK

ROLLBACK 语句用于还原 TiDB 内当前事务中的所有更改,作用与 COMMIT 语句相反。

语法图

RollbackStmt ::=
    'ROLLBACK' CompletionTypeWithinTransaction?

CompletionTypeWithinTransaction ::=
    'AND' ( 'CHAIN' ( 'NO' 'RELEASE' )? | 'NO' 'CHAIN' ( 'NO'? 'RELEASE' )? )
|   'NO'? 'RELEASE'

示例

{{< copyable "sql" >}}

CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY);
Query OK, 0 rows affected (0.12 sec)

{{< copyable "sql" >}}

BEGIN;
Query OK, 0 rows affected (0.00 sec)

{{< copyable "sql" >}}

INSERT INTO t1 VALUES (1);
Query OK, 1 row affected (0.00 sec)

{{< copyable "sql" >}}

ROLLBACK;
Query OK, 0 rows affected (0.01 sec)

{{< copyable "sql" >}}

SELECT * FROM t1;
Empty set (0.01 sec)

MySQL 兼容性

  • TiDB 不支持 savepoint 或 ROLLBACK TO SAVEPOINT 语法。
  • TiDB 解析但忽略 ROLLBACK AND [NO] RELEASE 语法。在 MySQL 中,使用该语法可在回滚事务后立即断开客户端会话。在 TiDB 中,建议使用客户端程序的 mysql_close() 来实现该功能。
  • TiDB 解析但忽略 ROLLBACK AND [NO] CHAIN 语法。在 MySQL 中,使用该语法可在回滚当前事务时立即以相同的隔离级别开启新事务。在 TiDB 中,推荐直接开启新事务。

另请参阅