我正在使用合并命令将不存在的记录插入表中。当我使用简单的插入命令时,它工作正常。如果我使用合并系统总是警告 ORA-00904: "T"."GROUP_COMPANY_ID" 无效标识符。一旦我将 ON 条件更改为 (1=1) 以强制为真,那么合并命令就可以正常工作。
原来的合并语句出了什么问题?我非常确定该表是在没有双引号名称的情况下创建的,因此这里没有大小写问题。
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';