Oracle MERGE引发ORA-00904错误

Tak*_*kol 0 oracle merge ora-00904

我正在使用merge命令将不存在的记录插入表中.当我使用简单的插入命令时,它工作正常.如果我使用合并系统总是警告ORA-00904:"T"."GROUP_COMPANY_ID"无效的标识符.一旦我将ON条件更改为(1 = 1)以强制为true,则merge命令正常工作.

原始合并声明出错了什么?我非常确定该表是在没有双引号的情况下创建的,所以这里没有案例问题.

create table test
(
  create_date      DATE not null,
  group_company_id CHAR(16) not null
)

-- This is okay
INSERT INTO test (create_date, group_company_id) VALUES (TO_DATE('20100531', 'YYYYMMDD'), 'abc');

-- This one will raise ORA-00904 error
MERGE INTO test T
USING (SELECT 'abc' AS group_company_id FROM DUAL) C
   ON (T.group_company_id = C.group_company_id)
-- ON (1 = 1)
WHEN NOT MATCHED THEN
     INSERT (create_date, group_company_id)
     VALUES (TO_DATE('20100531', 'YYYYMMDD'), 'abc')
WHEN MATCHED THEN
     UPDATE SET group_company_id = 'abc';
Run Code Online (Sandbox Code Playgroud)

Bla*_*air 8

您无法更新要加入的列.