2016 - 2024

感恩一路有你

创建数据库关系图时出现冲突 merge into插入数据出现主键冲突?

浏览量:4706 时间:2023-05-22 07:15:43 作者:采采

merge into插入数据出现主键冲突?

后台开发一个存储过程使用merge into,主要是根据主键值检查目标表中是否有主键值,如果有更新,否则插入。但是ORA-00001主键的在测试过程中经常发生。

前端开发人员口口声声说传入的数据不会有重复值,怀疑数据库的问题。我相信甲骨文不会有这样的bug。

为什么唐 我在后台演示这个错误的方法。

1.创建一个测试表

创建表T_TEST

一种充电器(1),

b号

)

2.创建测试存储过程

创建或替换程序测试(i_num in number)是

开始

并入t_test t

使用(SELECT #391#39 a,ROWNUM b FROM DUAL CONNECT BY ROWNUM lt I _ num)TA

开(t . a . ta . a)

当匹配时

更新集合表表表表表表

当不匹配时

插入值(TA.a,TA.b)

犯罪

结束测试

3.执行存储过程测试

SQLgt执行测试(12)

PL/SQL过程已成功完成

SQLgt select * from t_test

一个B

- -

1 12

1 11

1 10

1 9

1 8

1 7

1 6

1 5

1 4

1 3

1 2

1 1

选择了12行

SQLgt

4.清除t_test。

SQLgt截断表t_test

表格被截断

SQLgt

5.添加主键

SQLgt ALTER TABLE T_TEST使用索引添加约束PK_T_TEST主键(A)

表格已更改

6.在t_test中增加一行数据。

SQLgt执行测试(1)

PL/SQL过程已成功完成

SQLgt select * from t_t:无法在源表中获得一组稳定的行。

ORA-06512:排在第34位。测试#34,第3行。

ORA-06512:在一号线。

SQLgt

8.清除t_t:违反了唯一约束(_T_T:排在第34位。测试#34,第3行。

ORA-06512:在一号线。

SQLgt

可以证明还是传入数据的重复值造成的。

具体来说,就是要在节目中继续跟踪,让他们信服。

数据库冲突处理的原则?

处理矛盾的、迁就、回避、合作、妥协、胁迫等。当你遇到时,仔细思考,选择合适的来处理。

测试 数据 过程 主键

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。