Использование Oracle 11g. Мне нужно сделать обновление с самостоятельным подключением. Oracle не поддерживает обновления с соединениями и с помощью MERGE не работает, как я пытаюсь сделать обновление для столбцов, используемых в статье на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: "в 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 " * Причина: LHS из UPDATE SET содержит столбцы, указанные в разделе ON.
Я могу попытаться удалить строки, требующие обновления, и заполнить их из таблицы промежуточной/временной таблицы, но мне интересно посмотреть, есть ли там это другой способ.
Спасибо, но не кубики. «Ошибка SQL: ORA-01779: невозможно изменить столбец, который сопоставляется с таблицей, не содержащей ключей 01779. 00000 -« не может изменять столбец, который сопоставляется с таблицей, не содержащей ключей » * Причина: Попытка была сделана вставить или обновить столбцы вида соединения, которые сопоставляются с таблицей, не содержащей ключей. * Действие: непосредственно изменить базовые базовые таблицы. " – AfterWorkGuinness