Обновление Oracle с синтаксисом соединения не работает - PullRequest
0 голосов
/ 13 апреля 2011

Это мой рабочий запрос в MS Access ...

UPDATE Caxnode AS A INNER JOIN Caxnode AS B ON A.node_alias = B.node_alias 
SET A.partition_Type = 'LDOM', A.node_mode = 'LOGICAL', A.host_id = b.host_id, A.num_of_proc = b.num_of_proc 
WHERE (((A.node_mode)='virtual' Or (A.node_mode)='regular') AND ((B.partition_Type)='LDOM'));

Это не работает в Oracle, я погуглил и прочитал, что обновление не работает с внутренним объединением в Oracle ..

Может кто-нибудь помочь мне перевести этот запрос для работы в Oracle?

1 Ответ

0 голосов
/ 13 апреля 2011

JOIN in Update является проприетарным расширением MS для UPDATE.Начиная с Googling Синтаксис обновления Oracle , я полагаю, вы можете записать его следующим образом:

UPDATE Caxnode AS A
SET (partition_Type, node_mode, host_id, num_of_proc)
= (select 'LDOM', 'LOGICAL', host_id, num_of_proc from Caxnode B where A.node_alias = B.node_alias and B.partition_Type='LDOM')
WHERE A.node_mode='virtual' Or A.node_mode='regular'

Этот синтаксис гарантирует, что при наличии нескольких строк на стороне B вы получите ошибкутогда как в Access / SQL Server он просто выберет одну из строк случайным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...