---
title: update set 子查询中常量导致 pdml update 更新错误-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于update set 子查询中常量导致 pdml update 更新错误相关的常见问题和使用技巧，帮助您快速解决update set 子查询中常量导致 pdml update 更新错误的难题。
---
切换语言

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

划线反馈

# update set 子查询中常量导致 pdml update 更新错误

更新时间：2026-05-26 09:46

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

## 问题现象

在 OceanBase 数据库 V3.2.3 及之前版本，Oracle 模式下，执行如下 UPDATE 向量形式更新，向量子查询中存在常量，且子查询查询结果为空集的情况下，开启 PDML 会出现正确性问题。

开启 PDML 执行，B 为空表。

```SQL
UPDATE /*+ enable_parallel_dml parallel(4) */ A
       SET (c1,c2) = (SELECT 1, c1 from B);

```

## 关键诊断信息

### 触发条件

Oracle 模式下，执行 UPDATE 向量形式更新，向量子查询中存在常量，且子查询查询结果为空集的情况下，开启 PDML 会出现正确性问题。

## 问题原因

OceanBase 当前对于 `remove_const` 这个表达式的标记维护的不对，依然保留了其 `IS_CONST` 的标，导致表达式分配框架没有把 `remove_const` 识别为共享表达式。

## 影响租户

影响 OceanBase 数据库中的 Oracle 租户，对于 SYS 租户和 MySQL 租户无影响。

## 影响版本

OceanBase 数据库 V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.3 GA（oceanbase-3.2.3.0-20220419）及之后版本。

## 解决方法

升级到问题已修复版本，目前已修复的版本包含 OceanBase 数据库 V3.2.3 BP9（oceanbase-3.2.3.3-109000182023071410）。

## 规避方式

对于向量形式的更新语句，且子查询中存在常量的情况，禁用 PDML。

上一篇

[last_insert_id() 表达式无法预计算导致主键查询走了全表扫描](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000043625)

下一篇

[业务 SQL 子查询包含相同的列名，PS 执行报错 field list ambiguously defined](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000048145) ![有帮助](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) 咨询热线
