У меня есть две таблицы:Oracle ошибка 11g в слиянии с использованием ссылки на новую запись в вставки заявления
CREATE TABLE
test
(
id INTEGER,
str VARCHAR2(10)
);
CREATE TABLE
test2
(
id INTEGER,
tmp VARCHAR2(10)
);
и содержание:
INSERT INTO test2 (id, tmp) VALUES ( 10,'tmp10');
INSERT INTO test2 (id, tmp) VALUES ( 20,'tmp20');
Когда работает следующий скрипт:
MERGE INTO test mt
USING (
SELECT
1 AS id,
10 AS id2
FROM
dual) nr
ON ( mt.id=nr.id)
WHEN MATCHED THEN
UPDATE SET str=(SELECT id FROM test2 WHERE id=nr.id2)
WHEN NOT MATCHED THEN
INSERT (id,str) VALUES ( nr.id,(SELECT tmp FROM test2 WHERE id=nr.id2));
Я вижу ошибку:
[Error Code: 904, SQL State: 42000] ORA-00904: "NR"."ID2": invalid identifier
Но когда я работаю:
MERGE INTO test mt
USING (
SELECT
1 AS id,
10 AS id2
FROM
dual) nr
ON ( mt.id=nr.id)
WHEN MATCHED THEN
UPDATE SET str=(SELECT id FROM test2 WHERE id=nr.id2)
WHEN NOT MATCHED THEN
INSERT (id,str) VALUES ( nr.id,(SELECT tmp FROM test2 WHERE id=10));
это работает.
Почему ссылка на новую запись работает в операторе обновления, но не работает в инструкции insert?
Спасибо, это работает. –