开发者社区> 问答> 正文

多线程情况下,不同service执行数据保存操作,如何保证首先是插入,后续的就是更新操作。

比如说POJO对象中barcode字段是唯一的。
ThreadA和ThreadB可能在同一时间内同时保存barcode=111的对象!如图810783465561600884

说明下,methodA 和 methodB 都加上了spring的事务注解,我要表达的情况就是,这两个方法内都会先查数据库中有没有barcode=111的数据。 首先数据库肯定是没有的,所以两个方法都会进行save操作。所以就会插入两条相同barcode的数据。

展开
收起
芍芍君 2017-03-10 14:20:29 3501 0
3 条回答
写回答
取消 提交回答
  • 通过队列

    2019-07-17 20:53:59
    赞同 展开评论 打赏
  • 建个唯一索引,然后使用 insert into on duplicate update 语句。

    2019-07-17 20:53:59
    赞同 展开评论 打赏
  • 给barcode建一个唯一索引。插入sql使用replace

    2019-07-17 20:53:59
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
事务、全局索引、透明分布式 立即下载
面向失败设计 立即下载