PingKai Logo下载

START TRANSACTION

此语句在 TiDB 中启动一个新的事务。它类似于 BEGIN 语句。

在没有使用 START TRANSACTION 语句的情况下,每个语句默认会在自己的事务中自动提交。这一行为确保了与 MySQL 的兼容性。

概要

BeginTransactionStmt:

BeginTransactionStmt
BEGIN PESSIMISTIC OPTIMISTIC START TRANSACTION READ WRITE ONLY WITH TIMESTAMP BOUND TimestampBound AsOfClause WITH CONSISTENT SNAPSHOT WITH CAUSAL CONSISTENCY ONLY
AsOfClause
AS OF TIMESTAMP Expression

示例

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

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

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

mysql> COMMIT;
Query OK, 0 rows affected (0.01 sec)

MySQL 兼容性

  • START TRANSACTION 立即在 TiDB 中启动一个事务。这与 MySQL 不同,MySQL 中的 START TRANSACTION 是惰性创建事务的。但在 TiDB 中,START TRANSACTION 等同于 MySQL 的 START TRANSACTION WITH CONSISTENT SNAPSHOT。

  • 语句 START TRANSACTION READ ONLY 被解析以实现与 MySQL 的兼容,但仍然允许写操作。

相关链接