merge into的问题

super_thinker 2010-03-20 02:29:27
.append("MERGE INTO AC_THREE_GROUP atg ")
.append("USING AC_THREE_OPER_UTIL atou ")
.append("ON (atg.ATG_MSISDN=atou.AT_MSISDN) ")
.append("WHEN MATCHED THEN ")
.append(" UPDATE SET atg.ATG_IMSI=atou.AT_IMSI, ")
.append(" atg.ATG_IMEI=atou.AT_IMEI, ")
.append(" atg.ATG_GROUP_ID=atou.GI_GROUP_ID, ")
.append(" atg.ATG_CRE_TIME=SYSDATE ")
.append("WHEN NOT MATCHED THEN ")
.append(" INSERT ")
.append(" (ATG_MSISDN, ATG_IMSI, ATG_IMEI, ATG_GROUP_ID, ATG_CRE_TIME) ")
.append(" VALUES ")
.append(" (atou.AT_MSISDN, atou.AT_IMSI, atou.AT_IMEI, atou.GI_GROUP_ID, SYSDATE) ").


为什么 ac_three_group 中出现了 atg_msisdn相同的数据 纳闷 偶尔会出现 出现好几次了
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rexyudl 2010-03-23
  • 打赏
  • 举报
回复
表怎么建的?难道主键一样也能插入?
qicai841125 2010-03-21
  • 打赏
  • 举报
回复
可以试验一下啊
47522341 2010-03-20
  • 打赏
  • 举报
回复
并发,同时操作可能会导致这个问题;
你可以尝试在plsql或者sqlplus中建立两个session,然后按照下面的方式执行;
1,第一个session中执行merge into(假设其中有一条atg_msisdn在t1镇南关不存在),记住这时不要commit;
2,在session2中执行上面相同的语句;
3,commit session1
4,commit session2

这样后就会导致有一条重复的atg_msisdn

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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