【发布时间】:2017-08-10 17:17:07
【问题描述】:
当源表中不存在的记录存在于目标表中时,我们希望将 IS_DEL 位设置为 1。
是否可以通过 WHEN NOT MATCHED 子句使用 MERGE 语句,但使其执行 UPDATE?
尝试这样做时,我收到“ORA-00905:缺少关键字”消息。
MERGE
INTO AMEPSA.ENTERPRISE_LOCATION trg
USING (
SELECT C.LOCATION_KEY as LOCATION_KEY
FROM AMEPSA.ENTERPRISE_LOCATION C
INNER JOIN AMESTAGE.VW_LOCATION L ON C.REC_SRC_KEY_CD = L.LOCATION_ID
WHERE C.CURR_REC_IND = 'Y'
) src
ON (trg.LOCATION_KEY = src.LOCATION_KEY)
WHEN NOT MATCHED THEN UPDATE
SET trg.IS_DEL = 1
“WHEN NOT MATCH”子句是否只支持“THEN INSERT”?
【问题讨论】:
-
WHEN MATCHED THEN UPDATE更新匹配的行。当没有匹配项时,您希望UPDATE影响哪些行? -
如果没有匹配,你会更新什么?
-
如果没有匹配则尝试更新目标表。如果目标表中存在 ID 而源表中不再存在,则尝试在目标表中设置 IS_DEL 位 = 1。