首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Merge语句更新列时发出

使用Merge语句更新列时发出
EN

Stack Overflow用户
提问于 2019-01-11 15:17:28
回答 1查看 38关注 0票数 0

我需要基于oracle中两个表的内部连接来更新列。我使用合并,因为内部联接在更新中不支持。

查询:

代码语言:javascript
复制
MERGE INTO  FAC.CMC_PRSQ_SITE_QA PRSQ   
USING(
       SELECT PRPR_ID, ADDRESS_TYPE, PRAD_EFF_DT, PRAD_TERM_DT
       FROM FSG_WRK.FSG_PRAD_PRSQ_TEMP 
     ) TEMP
     ON (TEMP.PRPR_ID = PRSQ.PRPR_ID
     AND TEMP.ADDRESS_TYPE = PRSQ.PRAD_TYPE
     AND TEMP.PRAD_EFF_DT = PRSQ.PRAD_EFF_DT)
WHEN MATCHED THEN UPDATE 
SET PRSQ.PRSQ_NEXT_VER_DT = TEMP.PRAD_TERM_DT
WHERE TEMP.PRAD_TERM_DT > PRSQ.PRSQ_LAST_VER_DT ;

但在错误之下:

代码语言:javascript
复制
ORA-30926: unable to get a stable set of rows in the source tables
ORA-06512: at line 2
30926. 00000 -  "unable to get a stable set of rows in the source tables"
*Cause:    A stable set of rows could not be got because of large dml
           activity or a non-deterministic where clause.
*Action:   Remove any non-deterministic where clauses and reissue the dml.

此外,请让我知道是否有任何其他选项来重写这个查询。

EN

回答 1

Stack Overflow用户

发布于 2019-01-13 04:12:24

源查询(TEMP)是否返回与合并条件相匹配的目标(PRSQ)中一行的多个实例?当源包含需要在目标中更新的一行的多个实例时,通常会看到这种类型的错误。如果需要,则需要调整源查询或合并条件,以避免尝试将源中的多个行合并到目标的同一行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54149294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档