【发布时间】:2018-05-07 03:58:38
【问题描述】:
我正在尝试从下表更新 BUNDLE_NAME, 我的查询是:
MERGE INTO SOURCE S USING
(SELECT 'MANIFEST_ID' KEY,'CART' BUNDLE_NAME FROM DUAL) D
ON(S.KEY = D.KEY AND S.BUNDLE_NAME = D.BUNDLE_NAME)
WHEN MATCHED THEN UPDATE
SET BUNDLE_NAME = 'EPI';
但它给了我以下错误:
错误报告 - SQL 错误:ORA-38104:无法更新 ON 子句中引用的列:“S”。“BUNDLE_NAME” 38104. 00000 - “不能更新 ON 子句中引用的列:%s” *原因:UPDATE SET 的 LHS 包含 ON 子句中引用的列**
--我的要求是我只想使用合并语句进行更新--
【问题讨论】:
-
你真的只使用那些固定值,还是这只是一个演示?如果就这么简单,为什么要使用合并而不是更新?
-
不,其实我只是想知道为什么 ON 子句中引用的列无法更新的原因
-
Because those are the rules *8-) 我想这是为了在所有子句的评估过程中(并行)保持稳定的结果集。