qq_27972849
qq_27972849
采纳率0%
2017-03-27 07:59 阅读 9.9k

高并发情况下怎么避免数据重复

数据库有一字段:orderNo,orderNo的规则:20170327000001、20170327000002依次往后累加。。。并发时怎么避免存入重复的

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • lovingjiajia kikisang 2017-03-27 08:19

    如果是单台应用服务器,可以考虑在controller层加锁,保证重复的数据被加锁

    点赞 评论 复制链接分享
  • u012964142 o枫叶o 2017-03-27 08:22

    可以利用数据库表同步机制。
    将orderNo的值存入一个表中,每次取的时候更新表让这个数字+1。

    点赞 评论 复制链接分享
  • m0_37742084 唐国平 2017-03-28 12:18

    可以让orderNo的值从sequence中取得,在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,所以可以避免重复

    点赞 评论 复制链接分享
  • m0_37742084 唐国平 2017-03-28 12:21

    再补充一下sequence的创建和用法:

    create sequence S_orderNo
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 20170327000001
    increment by 1
    nocache;

    可以看如下例子:
    insert into S_Depart(departId,Departname,Departorder)values(S_orderNo.Nextval,'12345',1);

    点赞 评论 复制链接分享

相关推荐