0
使用Oracle 11g。我需要使用自連接進行更新。 Oracle不支持更新與聯接和使用合併不工作,因爲我想做什麼,我試過在使用上的條款Oracle - 通過加入更新
列的更新:
update
(
select a.ID, a.FROM_STAGE_ID, a.TO_STAGE_ID, b.TO_STAGE_ID
from STATES a,
STATES b
where a.ID = b.ID and
a.TO_STAGE_ID = b.FROM_STAGE_ID and
a.TO_STAGE_ID = 'FIZZBUZZ' and
a.FROM_STAGE_ID <> b.TO_STAGE_ID and
a.CODE = b.CODE
)
set a.TO_STAGE_ID=b.TO_STAGE_ID;
這導致在: 「SQL錯誤:ORA-00904: 」B TO_STAGE_ID「。」 「:無效識別符」
MERGE
INTO STATES a
USING STATES b
ON (
a.ID = b.ID and
a.TO_STAGE_ID = b.FROM_STAGE_ID and
a.TO_STAGE_ID = 'FIZZBUZZ' and
a.FROM_STAGE_ID <> b.TO_STAGE_ID and
a.CODE = b.CODE
)
WHEN MATCHED THEN
UPDATE
set a.TO_STAGE_ID = b.TO_STAGE_ID;
這導致:「SQL錯誤:ORA-38104:在ON子句引用的列不能被更新: 「A」。「TO_STAGE_ID」 38104. 00000 - 「ON子句中引用的列無法更新:%s「 *原因:UPDATE SET的LHS包含ON子句中引用的列
我可以嘗試刪除需要更新並從臨時/臨時表中填充它們的行,但有興趣查看是否存在是另一種方式。
謝謝,但沒有骰子。 「SQL錯誤:ORA-01779:無法修改映射到非密鑰保存表的列 01779. 00000 - 」無法修改映射到非密鑰保留表的列「 *原因:嘗試插入或更新連接視圖的列,其中 映射到非鍵保留表 *操作:直接修改底層基表。「 – AfterWorkGuinness