开发者社区> 问答> 正文

程序执行时间先后导致数据库id字段冲突的问题

问题描述:
在网页运行中,当用户注册时,我的程序将会给用户生成一个id,这个id是累加的结果。比如说user1:1000,user2:1001,user3:1003。 系统首先查找数据库到最大的userid(1003),然后这个用户的id就会被确定为是userid+1(1004)。
但是如果正好有两个用户同时进行注册,假设很巧的是,两个用户发起请求,导致它们同时查找数据库的时候获取的userid是一样,都是1003,然后分配给两个用户的id(1004)也会是一样,所以接着系统会按照这个id把用户信息(包括这个id)保存进入数据库,这样自然会产生bug,因为id冲突了.
类似的,我程序中还有很多其他地方也有相似的逻辑处理,这么说,都会有问题。
自己的解决方案:在保存进入数据库,使用类似try: catch 这种语法,如果catch到错误,就重新获取进行处理...
请问各位有什么更好的解决方法吗?

展开
收起
落地花开啦 2016-02-22 16:16:10 2541 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    id是自增标识,自增也可以设置间隔,比如 从100001开始 每次 增长 3 那么该字段就会是 1000001 1000004 1000007 ....

    2019-07-17 18:46:48
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载