这个与相同列匹配的合并查询如何导致主键冲突?

维沙尔泰吉

我手头有一个棘手的问题,其中合并查询如下:-

MERGE INTO table_destination D USING table_source S 
  ON (D.id = S.id AND D.name_s = S.name_s AND D.seqno = S.seqno AND D.type_s = S.type_s) 
  WHEN NOT MATCHED THEN INSERT (D.class_v, D.id, D.name_s, D.seqno, D.VALID, D.IFSC_CODE, D.CREATOR, D.APPROVER, D.type_s) VALUES (S.class_v, S.id, S.name_s, S.seqno, S.VALID, S.IFSC_CODE, S.CREATOR, S.APPROVER,S.type_s) 
  WHEN MATCHED THEN UPDATE SET D.VALID = S.VALID

给出主键违规,因为 -unique constraint (schema_1.TBL_BRANCH_PK1) violated

目标表的DDL如下:-

 CREATE TABLE table_destination
   (    "id" VARCHAR2(3 BYTE), 
    "name_s" VARCHAR2(3 BYTE), 
    "seqno" VARCHAR2(3 BYTE), 
    "NAME" VARCHAR2(50 BYTE), 
    "type_s" VARCHAR2(3 BYTE) NOT NULL ENABLE, 
    "IFSC_CODE" VARCHAR2(11 BYTE), 
    "VALID" NUMBER(1,0), 
    "CREATOR" VARCHAR2(22 BYTE), 
    "APPROVER" VARCHAR2(22 BYTE), 
     CONSTRAINT "TBL_BRANCH_PK1" PRIMARY KEY ("id", "name_s", "seqno", "type_s")
  );

显然,被违反的 Pk 由合并查询中正在检查匹配的列组成。

另一件需要注意的是,这个查询可以同时从两个会话运行,但这应该不是问题,因为合并必须在实际更新行之前获得行的锁定。请帮忙。提前致谢。

卡帕

您确实对目标表有约束,但源表中没有有关约束的信息。如果在源表中有两个具有相同键的记录,它们都将尝试插入并且约束失败。

create table t1 (id number);
create table t2 (id number, constraint tpk primary key (id));
insert into t1 values (1);
insert into t1 values (1);
commit;

merge into t2
using t1
on (t2.id = t1.id)
when not matched then insert values (t1.id);

SQL Error: ORA-00001: unique constraint (TPK) violated

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何忽略相同更改的合并冲突

来自分类Dev

如何合并多列查询

来自分类Dev

如何根据python中的某个“主键”合并两列

来自分类Dev

如何合并具有匹配列的行?

来自分类Dev

如何合并具有匹配列的行?

来自分类Dev

如何将来自不同匹配模式的具有相同节点类型的节点合并到单个列或集合中?

来自分类Dev

使用存根更新实体框架会导致主键冲突

来自分类Dev

由于相同的擦除而导致名称冲突

来自分类Dev

如何匹配R中具有相同主键的两个表中的数据

来自分类Dev

如何合并仅导致一次提交的git分支(如使用--squash),但允许将来进行合并而不会产生冲突?

来自分类Dev

Git如何避免合并冲突?

来自分类Dev

如何加速这个查询?

来自分类Dev

这个查询是如何工作的?

来自分类Dev

如何查询复合主键的子集?

来自分类Dev

该查询如何违反主键?

来自分类Dev

该查询如何违反主键?

来自分类Dev

sql合并两个选择查询结果,如果一列的值存在冲突,则保留查询A的结果

来自分类Dev

为什么此Subversion合并会导致树冲突而不是合并冲突?

来自分类Dev

使用相同维度和相同度量值时如何合并两个mdx查询

来自分类Dev

如何合并相同的值

来自分类Dev

Elasticsearch:合并术语查询和匹配查询

来自分类Dev

如何合并多个具有相同名称的列的表

来自分类Dev

如何合并具有相同列的记录并扩展时间范围?

来自分类Dev

合并数据帧时如何删除相同的列?

来自分类Dev

为什么选择樱桃总是会导致合并冲突?

来自分类Dev

在尝试将它们插入HashSet时,如何解决由于不相等对象的相同哈希码值导致的冲突?

来自分类Dev

我如何映射一个表的主键和标识符不相同的列?

来自分类Dev

Pandas 合并,冲突列中的条件更新

来自分类Dev

如何使外键值与主键值相同?

Related 相关文章

  1. 1

    如何忽略相同更改的合并冲突

  2. 2

    如何合并多列查询

  3. 3

    如何根据python中的某个“主键”合并两列

  4. 4

    如何合并具有匹配列的行?

  5. 5

    如何合并具有匹配列的行?

  6. 6

    如何将来自不同匹配模式的具有相同节点类型的节点合并到单个列或集合中?

  7. 7

    使用存根更新实体框架会导致主键冲突

  8. 8

    由于相同的擦除而导致名称冲突

  9. 9

    如何匹配R中具有相同主键的两个表中的数据

  10. 10

    如何合并仅导致一次提交的git分支(如使用--squash),但允许将来进行合并而不会产生冲突?

  11. 11

    Git如何避免合并冲突?

  12. 12

    如何加速这个查询?

  13. 13

    这个查询是如何工作的?

  14. 14

    如何查询复合主键的子集?

  15. 15

    该查询如何违反主键?

  16. 16

    该查询如何违反主键?

  17. 17

    sql合并两个选择查询结果,如果一列的值存在冲突,则保留查询A的结果

  18. 18

    为什么此Subversion合并会导致树冲突而不是合并冲突?

  19. 19

    使用相同维度和相同度量值时如何合并两个mdx查询

  20. 20

    如何合并相同的值

  21. 21

    Elasticsearch:合并术语查询和匹配查询

  22. 22

    如何合并多个具有相同名称的列的表

  23. 23

    如何合并具有相同列的记录并扩展时间范围?

  24. 24

    合并数据帧时如何删除相同的列?

  25. 25

    为什么选择樱桃总是会导致合并冲突?

  26. 26

    在尝试将它们插入HashSet时,如何解决由于不相等对象的相同哈希码值导致的冲突?

  27. 27

    我如何映射一个表的主键和标识符不相同的列?

  28. 28

    Pandas 合并,冲突列中的条件更新

  29. 29

    如何使外键值与主键值相同?

热门标签

归档