甲骨文合并不匹配然后可以更新吗?



当目标表中存在记录而源表中不存在时,我们希望设置 IS_DEL 位 = 1。

是否可以使用"不匹配时"子句使用 MERGE 语句,但使其执行更新?

尝试这样做时,我收到"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
">

当不匹配时"子句是否仅支持"然后插入"?

从文档中:

使用 MERGE 语句可以从一个或多个源中选择要更新或插入到表或视图中的行。您可以指定条件来确定是更新还是插入到目标表或视图中。

语法在源表(src(中查找目标表(trg(中具有或没有匹配行的行。如果有匹配的目标行,则更新该目标行;如果没有匹配的行,则会在目标表中插入一个新行。

它不会也不能在目标表中查找与源表中不匹配的行 - 这是您尝试标识和更新的内容。

WHEN MATCHEDWHEN NOT MATCHED的语法图也清楚地表明,你不能做WHEN NOT MATCHED THEN UPDATE

是的,您只能在不匹配时插入。查看预言机合并中的确切选项。

条件可以引用数据源或目标表。如果条件不为 true,则数据库在将行合并到表中时将跳过更新操作。

相关内容

  • 没有找到相关文章