问题描述:
在网页运行中,当用户注册时,我的程序将会给用户生成一个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到错误,就重新获取进行处理...
请问各位有什么更好的解决方法吗?
id是自增标识,自增也可以设置间隔,比如 从100001开始 每次 增长 3 那么该字段就会是 1000001 1000004 1000007 ....
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。