BEGIN

BEGIN 语句用于在 TiDB 内启动一个新事务,类似于 START TRANSACTION 和 SET autocommit=0 语句。

在没有 BEGIN 语句的情况下,每个语句默认在各自的事务中自动提交,从而确保 MySQL 兼容性。

语法图

BeginTransactionStmt

BEGIN - 图1

1. BeginTransactionStmt ::=
2. 'BEGIN' ( 'PESSIMISTIC' | 'OPTIMISTIC' )?
3. |   'START' 'TRANSACTION' ( 'READ' ( 'WRITE' | 'ONLY' ( 'WITH' 'TIMESTAMP' 'BOUND' TimestampBound )? ) | 'WITH' 'CONSISTENT' 'SNAPSHOT' )?

示例

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. COMMIT;
1. Query OK, 0 rows affected (0.01 sec)

MySQL 兼容性

TiDB 支持 BEGIN PESSIMISTIC 或 BEGIN OPTIMISTIC 的语法扩展,用户可以为某一个事务覆盖默认的事务模型。

另请参阅