ROLLBACK
ROLLBACK 语句用于还原 TiDB 内当前事务中的所有更改,作用与 COMMIT 语句相反。
语法图
1. RollbackStmt ::=
2. 'ROLLBACK' CompletionTypeWithinTransaction?
4. CompletionTypeWithinTransaction ::=
5. 'AND' ( 'CHAIN' ( 'NO' 'RELEASE' )? | 'NO' 'CHAIN' ( 'NO'? 'RELEASE' )? )
6. | 'NO'? 'RELEASE'
示例
1. CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY);
1. Query OK, 0 rows affected (0.12 sec)
1. BEGIN;
1. Query OK, 0 rows affected (0.00 sec)
1. INSERT INTO t1 VALUES (1);
1. Query OK, 1 row affected (0.00 sec)
1. ROLLBACK;
1. Query OK, 0 rows affected (0.01 sec)
1. SELECT * FROM t1;
1. 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 中,推荐直接开启新事务。
