小虾米闯江湖 2019-04-24 15:33 采纳率: 0%
浏览 1241

java中执行delete,insert被重复执行

得到了一条数据,我现在正常的操作是要先删后增,正常的情况下会执行delete然后insert操作,但是偶尔会delete,delete,insert,insert这样执行条重复的操作,最后导致insert了条重复的,这是偶尔发生的,一条天概4000条数据会有那么2条左右有这种情况,不是前端提交了2次这种情况,问题和这位大哥的一样https://bbs.csdn.net/topics/360209410?list=lz,有遇到过的大哥给个思路

//删除应缴信息
                                        sql = "delete t_jj_sfxx where lsh=  '"+map.get("lsh").toString()+kscs+"' and  xmbm=  '"+maps.get("ffsxmbm")+"' and  clbz='F' ";
                                        jdbcDao.execute(sql);

                                        BigDecimal xmgs_sum = new BigDecimal(xmgs[b]); 
                                        BigDecimal xmje_sum = new BigDecimal(xmje[b]);  
                                        BigDecimal hj_sum = xmgs_sum.multiply(xmje_sum);  
                                        logger.info("获取项目信息---项目数量:"+xmgs_sum+"项目金额:"+xmje_sum+"总金额:"+hj_sum);

                                        sql ="insert into t_jj_sfxx(fid,ysje,hpzl,hphm,sfzh,sjly,lsh,xm,wbywdmsm,ywdwbh,xmbm," +
                                              " xmgs,xmje,clbz,clsj,userid,sflx,jkfs,jkid,kskm,jjxmbm,ywlx,ywyy,czlx,fdwwm,kscs)values  ('"+fids+"','"+xmje[b]+"',''" +
                                                " ,'','"+map.get("zmhm").toString()+"','"+map.get("ywlx").toString()+"'," +
                                                "'"+map.get("lsh").toString()+kscs+"','"+map.get("xm").toString()+"','"+map.get("sfmc").toString()+"'," +
                                                "'"+map.get("glbm").toString()+"','"+maps.get("ffsxmbm")+"',   '"+xmgs[b]+"'," +
                                                " '"+hj_sum+"','F',TO_CHAR(SYSDATE,'yyyy-mm-dd'),'"+user.getUserid()+"','"+inmap.get("sflx")+"','"+user.getJkfs()+"','"+inmap.get("ywlx")+"','"+kskm+"','"+str[b]+"','"+map.get("ywlx").toString()+"','"+map.get("ywyy").toString()+"','"+user.getCzlx()+"','"+user.getDwbm()+"','"+kscs+"')";

                                        jdbcDao.execute(sql);

就是这段代码,大部分情况是delete后insert,但有极少数发生delete delete insert insert,就是那个删除连续运行2次后,插入跟着连续运行了2次

异常日志:图片说明

正常日志:图片说明

  • 写回答

3条回答 默认 最新

  • 关注

    首先,不是很明白你这个问题的背景哈,从你说的来看,是不是你现在有一条数据插入重复的情况?这种类似的防重问题,解决办法有很多种:
    1、在插入前,基于这条数据的唯一标识做一个锁(分布式场景,可能要做分布式锁)。每次插入前,都来判断下,是否被处理过。
    2、在db中对唯一列建唯一索引。
    回答的不一定对,仅供参考。

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器