---
title: Oracle 租户使用 rowid 做为条件进行重复更新数据，第二次没有更新到数据的原因和解决方法-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于Oracle 租户使用 rowid 做为条件进行重复更新数据，第二次没有更新到数据的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决Oracle 租户使用 rowid 做为条件进行重复更新数据，第二次没有更新到数据的原因和解决方法的难题。
---
切换语言

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

划线反馈

# Oracle 租户使用 rowid 做为条件进行重复更新数据，第二次没有更新到数据的原因和解决方法

更新时间：2026-05-28 02:06

适用版本： V3.1.x、V3.2.x 内容类型：Troubleshoot  

## 问题现象

OceanBase 租户 update 数据，使用 rowid 做为唯一条件进行更新数据，第一次更新一条数据，第二次更新 0 行数据的。

测试复现，示例如下。

```shell
-- 表结构
CREATE TABLE "NEW_BIZ"."T22" (
  "NUM1" NUMBER(12) DEFAULT NULL NOT NULL ENABLE,
  "NUM2" NUMBER(12) DEFAULT NULL,
  CONSTRAINT "PK_num1
" PRIMARY KEY ("NUM1")
) COMPRESS FOR ARCHIVE REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0;

-- 当前只有一条数据，ROWID 为 *AAEPAQAAwAMAAAA=
obclient [NEW_BIZ]> select rowid,num1,num2 from t22;
+-------------------+------+------+
| ROWID             | NUM1 | NUM2 |
+-------------------+------+------+
| *AAEPAQAAwAMAAAA= |    3 |    3 |
+-------------------+------+------+
1 row in set (0.104 sec)

-- 第一次更新，影响一条数据
obclient [NEW_BIZ]> update t22 set num1=4,num2=4 where rowid='*AAEPAQAAwAMAAAA=';
Query OK, 1 row affected (0.100 sec)
Rows matched: 1  Changed: 1  Warnings: 0

-- 第二次更新，影响 0 行
obclient [NEW_BIZ]> update t22 set num1=5,num2=5 where rowid='*AAEPAQAAwAMAAAA=';
Query OK, 0 rows affected (0.096 sec)
Rows matched: 0  Changed: 0  Warnings: 0

-- 检查当前 rowid，第一次更新了主键，导致 rowid 发生了改变，所以第二次不会更新数据
obclient [NEW_BIZ]> select rowid,num1,num2 from t22;
+-------------------+------+------+
| ROWID             | NUM1 | NUM2 |
+-------------------+------+------+
| *AAEPAQAAwAQAAAA= |    4 |    4 |
+-------------------+------+------+

```

## 问题原因

在预期内，OceanBase 数据库的 rowid 在 V3.x 版本中都是包含主键的，无主键表 rowid 包含自增列。 当主键值发生改变，相同的 rowid 第二次就不会更新到数据。也就是说当主键值发生改变时，它的 rowid 也会改变。

## 问题的风险及影响

无影响。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 适用版本

OceanBase 数据库 V3.x 版本。

## 解决方法

不需要解决，如果有业务这样做，需要修改业务。

上一篇

[OceanBase 数据库 V4.2.1 版本中 insert 语句出现非预期报错 ORA-12899: value too large for column xxxx (actual: 2, maximum: 1) 的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002397187)

下一篇

[OceanBase 的 Batch 执行](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002393952) ![有帮助](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) 咨询热线
