---
title: "回滚事务 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 回滚事务 回滚一个事务是指将事务的修改全部撤销，可以回滚当前整个未提交事务，也可以回滚到事务中任意一个保存点。 回滚整个事务 如果事务未提交，您可以使用 ROLLBACK 语句回滚整个事务。 回滚整个事务后： 所有的修改会被丢弃。 所有保存点被清除。 事务持有的所有锁被释放。 语句语法格式如下： ROLLBACK; …
---
切换语言

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

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

# 回滚事务

更新时间：2026-04-07 10:58:34

[编辑](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/500.roll-back-transactions-of-oracle-mode.md)  

回滚一个事务是指将事务的修改全部撤销，可以回滚当前整个未提交事务，也可以回滚到事务中任意一个保存点。

## 回滚整个事务

如果事务未提交，您可以使用 `ROLLBACK` 语句回滚整个事务。

回滚整个事务后：

- 所有的修改会被丢弃。
 - 所有保存点被清除。
 - 事务持有的所有锁被释放。

语句语法格式如下：

```sql
ROLLBACK;

```

以下示例通过 `ROLLBACK` 回滚当前事务的全部修改。

```sql
obclient> 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, value) VALUES(4,'JP',10004);
Query OK, 1 row affected

obclient [SYS]> INSERT INTO ordr(id, name, value) VALUES(5,'FR',10005),(6,'RU',10006);
Query OK, 2 rows affected
Records: 2  Duplicates: 0  Warnings: 0

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   | 10004 | 03-NOV-22  |
|  5 | FR   | 10005 | 03-NOV-22  |
|  6 | RU   | 10006 | 03-NOV-22  |
+----+------+-------+------------+
6 rows in set

obclient> ROLLBACK;
Query OK, 0 rows affected

obclient> 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

```

本示例中，通过 `BEGIN` 显示开启了一个事务，在未使用 `COMMIT` 显示提交事务前，所有修改只对当前会话可见，修改未持久化，可以使用 `ROLLBACK` 语句回滚修改。

## 回滚到某个保存点

如果事务设置了保存点，可以使用 `ROLLBACK TO SAVEPOINT` 语句回滚到某个保存点。事务保存点相关说明请参见 [事务保存点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476622)。

#### 说明

DBLink 写支持 `SAVEPOINT` 功能，允许执行事务回滚到指定的保存点。有关 DBLink 写相关信息，请参见 [通过 DBLink 修改远端数据库中的数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476653)。

回滚事务到某个保存点后：

- 事务不会结束。
 - 保存点之前的修改被保留，保存点之后的修改被丢弃。
 - 保存点之后的保存点（不包括保存点自身）被清除。
 - 保存点之后事务持有的所有锁被释放。

回滚到某个保存点的语法格式如下：

```sql
ROLLBACK TO SAVEPOINT pointname;

```

其中，`pointname` 表示事务保存点的名称。

回滚事务到某个还原点详细示例及说明，请参见 [回滚事务到某个保存点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476623)。

## 相关文档

- [提交事务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476146)
 - [事务保存点](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004476622)

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