甲骨文,合并语句不起作用
Oracle, Merge statement not working
我的意图是避免尝试将相同的记录插入数据库。
该语句不插入记录。 select 中引用的记录尚不存在,因此应插入。我哪里出错了。
MERGE INTO XX0101.CAMPAIGN b
USING (SELECT * FROM XX0101.CAMPAIGN WHERE CAMPAIGN_ID=7 AND X_ID='0123' AND Y_ID='4567') a
ON (a.CAMPAIGN_ID = b.CAMPAIGN_ID)
WHEN NOT MATCHED THEN
INSERT (CAMPAIGN_ID, X_ID, Y_ID, ROW_LAST_UPDATE_TS, ROW_LAST_UPDATE_ID)
VALUES (7, '0123', '4567', SYSDATE, 'ABC');
这听起来不像 MERGE
的工作,而是简单的 INSERT
。
BEGIN
INSERT INTO XX0101.CAMPAIGN
(CAMPAIGN_ID, X_ID, Y_ID, ROW_LAST_UPDATE_TS, ROW_LAST_UPDATE_ID)
VALUES (7, '0123', '4567', SYSDATE, 'ABC');
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;
END;
/
这假设您在其中有一个 PK 或唯一索引。
我的意图是避免尝试将相同的记录插入数据库。 该语句不插入记录。 select 中引用的记录尚不存在,因此应插入。我哪里出错了。
MERGE INTO XX0101.CAMPAIGN b
USING (SELECT * FROM XX0101.CAMPAIGN WHERE CAMPAIGN_ID=7 AND X_ID='0123' AND Y_ID='4567') a
ON (a.CAMPAIGN_ID = b.CAMPAIGN_ID)
WHEN NOT MATCHED THEN
INSERT (CAMPAIGN_ID, X_ID, Y_ID, ROW_LAST_UPDATE_TS, ROW_LAST_UPDATE_ID)
VALUES (7, '0123', '4567', SYSDATE, 'ABC');
这听起来不像 MERGE
的工作,而是简单的 INSERT
。
BEGIN
INSERT INTO XX0101.CAMPAIGN
(CAMPAIGN_ID, X_ID, Y_ID, ROW_LAST_UPDATE_TS, ROW_LAST_UPDATE_ID)
VALUES (7, '0123', '4567', SYSDATE, 'ABC');
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
NULL;
END;
/
这假设您在其中有一个 PK 或唯一索引。