创建数据库关系图时出现冲突 merge into插入数据出现主键冲突?
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
可以证明还是传入数据的重复值造成的。
具体来说,就是要在节目中继续跟踪,让他们信服。
数据库冲突处理的原则?
处理矛盾的、迁就、回避、合作、妥协、胁迫等。当你遇到时,仔细思考,选择合适的来处理。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。