ORACLE - 使用嵌套连接

时间:2017-01-23 04:15:49

标签: oracle oracle10g subquery

我在使用oracle方面几乎全新,我碰到了阻挡者。下面是我根据我在线研究创建的查询,使用嵌套连接语句中的值更新表的多个列。

UPDATE
(    
    SELECT
    A.COLUMN1 OLD_COLUMN1,
    BC.COLUMN1 NEW_COLUMN1,
    A.BALANCE OLD_COLUMN2,
    BC.COLUMN2_MIN NEW_COLUMN2,
    A.COLUMN3 OLD_COLUMN3,
    BC.COLUMN3 NEW_COLUMN3
    FROM TABLE_A A
    INNER JOIN  
    (
        SELECT B.TWWID,
               B.ITEMDATE,
               B.COLUMN2_MIN,
               C.COLUMN3,
               C.COUNTRYID,
               C.COLUMN1 
        FROM TABLE_B B
        LEFT OUTER JOIN TABLE_C C
            ON TO_CHAR(B.ID) = TO_CHAR(C.ID)
    ) BC
        ON A.ID = BC.ID
        AND A.DATE = BC.DATE
)ABCUPDATE
SET ABCUPDATE.OLD_COLUMN1 = ABCUPDATE.NEW_COLUMN1,
ABCUPDATE.OLD_COLUMN2 = ABCUPDATE.NEW_COLUMN2,
ABCUPDATE.OLD_COLUMN3 = ABCUPDATE.NEW_COLUMN3;

选择子查询会返回预期的结果,但是当我整个运行更新脚本时会返回错误。

  

ORA-01779:无法修改映射到非密钥保留的列   表

任何人都可以解释为什么我会遇到此错误以及我可以对脚本进行哪些调整才能使其正常工作?

提前致谢!

0 个答案:

没有答案