[100分求教]使用Oralce的OracleBulkCopy批量插入数据,结果没验证主键是否重复导致ORA-01502

romanchaos 2015-09-14 03:02:44
系统设计是分为两个数据库A和B,主键用的是生成的流水号,在两个数据库间转移数据时由于中间要调用其他系统做一些处理(webapi),结果有时候可能数据从A转移到B时,已经用OracleBulkCopy成功插入B了,但由于其它系统出问题导致方法调用失败,从而A和B有同样主键的数据。那么当用户继续进行操作将数据从A转移到B就会发现OracleBulkCopy再次成功插入B,但B的主键由于有重复从而导致报ORA-01502错误。现在我们只能在用OracleBulkCopy之前先搜一次检测是否已存在重复的主键,但批量插入是为了性能,这个搜索导致批量插入功能的性能达不到要求。请问大家有没有好的办法在使用OracleBulkCopy时能验证主键是否重复?
...全文
370 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
romanchaos 2015-12-04
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
ORA-01502 ,是索引失效的错误,如果对表进行了 move ,就会出现这个提示。 你这里批量写数,建议先写到临时表,写完以后,再使用 merge 命令(或 not exists )写到正式表,最后清空临时表。
不好意思这么久才结贴,问题已经解决就是不用bulkcopy……mssql的话就完全没有这个问题,如果主键重复就会自动报异常。
卖水果的net 2015-09-20
  • 打赏
  • 举报
回复
ORA-01502 ,是索引失效的错误,如果对表进行了 move ,就会出现这个提示。 你这里批量写数,建议先写到临时表,写完以后,再使用 merge 命令(或 not exists )写到正式表,最后清空临时表。

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧