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

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

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

# 回滚事务

更新时间：2026-03-16 15:34: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/500.roll-back-transactions-of-mysql-mode.md)  

本文介绍回滚事务的操作。

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

## 回滚整个事务

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

回滚整个事务后：

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

回滚整个事务的语法格式如下：

```sql
ROLLBACK;

```

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

```sql
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 |
|  4 | JP   |  NULL | 2022-10-19 14:51:44 |
|  5 | CN   |  NULL | 2022-10-19 14:53:56 |
+----+------+-------+---------------------+
5 rows in set

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

obclient [test]> INSERT INTO ordr(id, name, value) VALUES(6,'JP',10007);
Query OK, 1 row affected

obclient [test]> INSERT INTO ordr(id, name, value) VALUES(8,'FR',10008),(9,'RU',10009);
Query OK, 2 rows affected
Records: 2  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   |  1003 | 2022-10-19 14:51:12 |
|  4 | JP   |  NULL | 2022-10-19 14:51:44 |
|  5 | CN   |  NULL | 2022-10-19 14:53:56 |
|  6 | JP   | 10007 | 2022-10-19 14:58:24 |
|  8 | FR   | 10008 | 2022-10-19 14:58:35 |
|  9 | RU   | 10009 | 2022-10-19 14:58:35 |
+----+------+-------+---------------------+
8 rows in set

obclient [test]> ROLLBACK;
Query OK, 0 rows affected

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   |  1003 | 2022-10-19 14:51:12 |
|  4 | JP   |  NULL | 2022-10-19 14:51:44 |
|  5 | CN   |  NULL | 2022-10-19 14:53:56 |
+----+------+-------+---------------------+
5 rows in set

```

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

## 回滚事务到某个保存点

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

回滚到某个保存点后：

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

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

```sql
ROLLBACK TO SAVEPOINT pointname;

```

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

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

## 相关文档

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

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