---
title: "开启事务 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: "开启事务 本文介绍 OceanBase 数据库常用的开启事务语句及示例。 开启事务 OceanBase 数据库 MySQL 模式的事务控制语句与 MySQL 数据库兼容，OceanBase 数据库的 MySQL 模式开启事务可以通过以下方式来完成： 执行 BEGIN 命令 obclient [test]&gt; BEGIN…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# 开启事务

更新时间：2026-04-05 15:50:43

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/300.develop/100.application-development-of-mysql-mode/600.transaction-in-develop-of-mysql-mode/200.start-a-transaction-of-mysql-mode.md)  

本文介绍 OceanBase 数据库常用的开启事务语句及示例。

## 开启事务

OceanBase 数据库 MySQL 模式的事务控制语句与 MySQL 数据库兼容，OceanBase 数据库的 MySQL 模式开启事务可以通过以下方式来完成：

- 执行 `BEGIN` 命令

  ```sql
  obclient [test]> BEGIN;      //开启事务
  obclient [test]> INSERT INTO table1 VALUES(1,1);  
  obclient [test]> COMMIT;

  ```
 - 执行 `START TRANSACTION` 命令

  ```sql
  obclient [test]> START TRANSACTION; //开启事务
  obclient [test]> INSERT INTO table1 VALUES(1,1);  
  obclient [test]> COMMIT;

  ```
 - 配置 `autocommit = 0`（关闭自动提交）后，执行 `INSERT`、`UPDATE`、`DELETE`、`SELECT FOR UPDATE` 语句时，系统会默认开启一个新事务。

  ```sql
  obclient [test]> SET AUTOCOMMIT=0;
  obclient [test]> INSERT INTO table1 VALUES(1,1);  //开启事务
  obclient [test]> COMMIT;

  obclient [test]> SET AUTOCOMMIT=0;
  obclient [test]> UPDATE table1 SET id = 2 WHERE id = 1;  //开启事务
  obclient [test]> COMMIT;

  obclient [test]> SET AUTOCOMMIT=0;
  obclient [test]> DELETE FROM table1 WHERE id = 2;  //开启事务
  obclient [test]> COMMIT;

  obclient [test]> SET AUTOCOMMIT=0;
  obclient [test]> SELECT id FROM table1 WHERE id = 1 FOR UPDATE;  //开启事务
  obclient [test]> COMMIT;

  ```

当事务开启时，OceanBase 数据库会为事务分配一个事务 ID，用于唯一的标识一个事务。

在实际使用中，多个并发的连接下，对同一个数据表进行操作时，可能会出现两个事务对同一行数据进行操作。对于查询的读操作，可以通过 `SELECT FOR UPDATE` 语句锁定查询结果，避免其他 DML 语句对该笔记录进行同时修改。语句的详细使用方法，请参见 [锁定查询结果 SELECT FOR UPDATE](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476563)。

以下示例通过 `SET autocommit=0` 关闭自动提交功能后，再通过 `UPDATE` 语句开启一个事务。

```sql
obclient [test]> CREATE TABLE ordr(
id INT NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
value INT,
gmt_create DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP );
Query OK, 0 rows affected

obclient [test]>  INSERT INTO ordr(id, name, value)
VALUES (1,'CN',10001),(2,'US', 10002),(3,'EN', 10003);
Query OK, 3 rows affected
 Records: 3  Duplicates: 0  Warnings: 0

obclient [test]> SELECT * FROM ordr;
+----+------+-------+---------------------+
| id | name | value | gmt_create          |
+----+------+-------+---------------------+
|  1 | CN   | 10001 | 2022-10-19 14:51:12 |
|  2 | US   | 10002 | 2022-10-19 14:51:12 |
|  3 | EN   | 10003 | 2022-10-19 14:51:12 |
+----+------+-------+---------------------+
2 rows in set

obclient [test]> SET autocommit=0;
Query OK, 0 rows affected

obclient [test]> UPDATE ordr SET id=4 WHERE name='US';
Query OK, 1 row affected
Rows matched: 1  Changed: 1  Warnings: 0

```

执行成功后，可以使用 `oceanbase.V$OB_TRANSACTION_PARTICIPANTS` 查询活跃事务的参与者信息。

```sql
obclient [test]> SELECT * FROM oceanbase.V$OB_TRANSACTION_PARTICIPANTS;
*************************** 1. row ***************************
       TENANT_ID: 1002
          SVR_IP: xx.xx.xx.223
        SVR_PORT: 2882
      SESSION_ID: 3221487660
  SCHEDULER_ADDR: "xx.xx.xx.223:2882"
         TX_TYPE: UNDECIDED
           TX_ID: 110352
           LS_ID: 1001
    PARTICIPANTS: NULL
 CTX_CREATE_TIME: 2022-10-19 14:55:23.763474
 TX_EXPIRED_TIME: 2022-10-19 14:55:23.763474
           STATE: ACTIVE
          ACTION: START
PENDING_LOG_SIZE: 116
FLUSHED_LOG_SIZE: 0
            ROLE: LEADER
1 row in set

```

视图 `oceanbase.V$OB_TRANSACTION_PARTICIPANTS` 中的字段及详细说明请参见 [oceanbase.V$OB_TRANSACTION_PARTICIPANTS](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004478125)。

## 相关文档

- [事务保存点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476570)
 - [提交事务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476105)
 - [回滚事务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476108)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
