---
title: "提交事务 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 提交事务 提交一个事务会让事务的修改持久化生效，清除保存点并释放事务所持有的所有锁。 提交事务 OceanBase 数据库 Oracle 模式的提交事务可以显式使用也可以隐式使用。显式地提交事务，需要使用 COMMIT 语句或者使用提交按钮（在图形化客户端工具中）结束事务；隐式提交事务时不需要主动提交，当系统变量 a…
---
切换语言

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

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

# 提交事务

更新时间：2026-03-25 10:34:15

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

提交一个事务会让事务的修改持久化生效，清除保存点并释放事务所持有的所有锁。

## 提交事务

OceanBase 数据库 Oracle 模式的提交事务可以显式使用也可以隐式使用。显式地提交事务，需要使用 `COMMIT` 语句或者使用提交按钮（在图形化客户端工具中）结束事务；隐式提交事务时不需要主动提交，当系统变量 `autocommit` 的值为 `1` 时，每条语句执行结束后，OceanBase 数据库即会自动地将这条语句所在的事务提交，一条语句就是一个事务。

#### 说明

OceanBase 数据库会在 DDL 语句前和后隐式地发起一个 `COMMIT` 语句，也会提交事务。

- 如果使用 `BEGIN` 开启一个事务，执行 DML 语句后，需要使用 `COMMIT` 提交事务。

     - 在您提交事务之前，您的修改只对当前会话可见，对其他数据库会话是不可见的；您的修改没有持久化，所以不是最终的结果，可以用 `ROLLBACK` 语句回滚这些修改。
     - 在您提交事务之后，您的修改对所有数据库会话可见。您的修改结果持久化成功，不可以用 `ROLLBACK` 语句回滚这些修改。  

  #### 说明

  如果事务隔离级别设置了可重复读，则已经开启事务的会话无法查询到新提交的数据。事务隔离级别的更多介绍请参见 [事务隔离级别](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479414)。
 - 如果隐式地开启事务（开启了自动提交事务，即 `autocommit` 的值为 `1`），则一条 SQL 就是一个事务，不再需要提交事务。SQL 执行后您的修改即持久化成功，不可以用 `ROLLBACK` 语句回滚这些修改。

### 显示提交事务示例

以下示例通过 `BEGIN` 开始一个事务，然后使用 `INSERT` 在表 `ordr` 中插入数据，最后通过 `COMMIT` 语句提交。

```sql
obclient [SYS]> SELECT * FROM ordr;
+----+------+-------+------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+------------+
|  1 | CN   | 10001 | 03-NOV-22  |
|  2 | US   | 10002 | 03-NOV-22  |
|  3 | EN   | 10003 | 03-NOV-22  |
+----+------+-------+------------+
3 rows in set

obclient [SYS]> BEGIN;
Query OK, 0 rows affected

obclient [SYS]> INSERT INTO ordr(id,name) VALUES(4,'JP');
Query OK, 1 row affected

obclient [SYS]> COMMIT;
Query OK, 0 rows affected

```

执行成功后，退出会话再重新连接，发现表数据已正确插入并保存成功。

```sql
obclient [SYS]> exit;

$obclient -h192.168.0.0 -utpcc@obbmsql#obdemo -P2883 -p******
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221487661
Server version: OceanBase 4.0.0.0 (r100000252022102910-df01cef074936b9c9f177697500fad1dc304056f) (Built Oct 29 2022 10:27:50)

Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

obclient [SYS]> SELECT * FROM ordr;
+----+------+-------+------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+------------+
|  1 | CN   | 10001 | 03-NOV-22  |
|  2 | US   | 10002 | 03-NOV-22  |
|  3 | EN   | 10003 | 03-NOV-22  |
|  4 | JP   | NULL  | 03-NOV-22  |
+----+------+-------+------------+
4 rows in set

```

### 隐式提交事务示例

以下示例，通过配置变量 `autocommit=1`，开启自动提交。

```sql
obclient [SYS]> SELECT * FROM ordr;
+----+------+-------+------------+
| ID | NAME | VALUE | GMT_CREATE |
+----+------+-------+------------+
|  1 | CN   | 10001 | 03-NOV-22  |
|  2 | US   | 10002 | 03-NOV-22  |
|  3 | EN   | 10003 | 03-NOV-22  |
+----+------+-------+------------+
4 rows in set

obclient> SET autocommit=1;
Query OK, 1 row affected

INSERT INTO ordr(id,name) VALUES(4,'JP');
Query OK, 1 row affected

```

$obclient -h192.168.0.0 -utpcc@obbmsql#obdemo -P2883 -p******
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221487664
Server version: OceanBase 4.0.0.0 (r100000252022102910-df01cef074936b9c9f177697500fad1dc304056f) (Built Oct 29 2022 10:27:50)

```

## 相关文档

- [开启事务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476148)

 上一篇 下一篇 ![有帮助](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) 咨询热线
