I have a table DOMAINS
in 2 different schemas with columns ID
, NAME
, CODE
, DESCRIPTION
.
对于新模式中存在的任何 NAME
,它应该使用现有的 ID
而不进行任何合并;对于那些新的 NAME
记录,它应该从旧模式插入 ID
。
MERGE INTO DOMAINS A
USING (SELECT ID,NAME,CODE,DESCRIPTION FROM <Old Schema 6.1>.DOMAINS@DB_MIG_61_TO_74) B
ON(A.NAME = B.NAME)
WHEN MATCHED **<do nothing>**
WHEN NOT MATCHED THEN INSERT(A.ID,A.NAME,A.CODE,A.DESCRIPTION)
VALUES(B.ID,B.NAME,B.CODE,B.DESCRIPTION);
我如何解释 do nothing
在上述查询中的部分?
原文由 user2102665 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于您的情况,无需使用该部分:
WHEN MATCHED THEN UPDATE ...
( 使用
WHEN MATCHED THEN UPDATE SET a.id = a.id
被接受(Oracle 不会投掷)但没有影响,因此,这种用法是多余的,因为您不想为匹配的情况更改任何内容。 )针对当前案例继续以下操作:
演示