首页 新闻 搜索 专区 学院

如何保证用户的账号(8位字符串)唯一?

0
悬赏园豆:10 [待解决问题]

在数据库里 把用户账号这个字段设为不重复,注册的时候 如果重复了应该怎么办?

问题补充:

腾讯的QQ号 是如何生成的呢?

荒城漠海的主页 荒城漠海 | 初学一级 | 园豆:74
提问于:2020-11-23 09:27
< >
分享
所有回答(3)
0

用戶帳號應該是用戶輸入的吧,重複就提示用戶更換
如果你要的是系統產生的唯一代號,自訂個規則遞增即可,純粹流水號也行

RosonJ | 园豆:4748 (老鸟四级) | 2020-11-23 09:52

不打算用流水号,号码是服务端自动生成的

支持(0) 反对(0) 荒城漠海 | 园豆:74 (初学一级) | 2020-11-23 10:17

@荒城漠海:
兩種情況

  1. 不希望用戶看出號碼規則,號碼編入亂數
  2. 用戶看出號碼規則無所謂,簡單編號即可(編入日期、時間或特定編號)
支持(0) 反对(0) RosonJ | 园豆:4748 (老鸟四级) | 2020-11-23 10:23

@RosonJ: 感谢

支持(0) 反对(0) 荒城漠海 | 园豆:74 (初学一级) | 2020-11-23 10:26
0

具体可以参考这个https://blog.csdn.net/nanzhinan/article/details/80601089?utm_source=blogxgwz5,应该也是预先放号(确定一个号码段然后生成号码池,每次申请都会从这个池里取一个),当号码池接近空掉后再创建一个号码池,这样每次创建号码池时才会进行一次数据库查询保证号码的唯一性。

DreamCatt | 园豆:235 (菜鸟二级) | 2020-11-23 09:53

生成号码池的时候,依然还是需要保证每个号码唯一,跟实时生成 没大的区别啊

支持(0) 反对(0) 荒城漠海 | 园豆:74 (初学一级) | 2020-11-23 10:21

@荒城漠海: 但是生成号码池又不是一直在运行的 总比你需要的时候在一个个生成好吧

支持(0) 反对(0) DreamCatt | 园豆:235 (菜鸟二级) | 2020-11-23 10:23

@荒城漠海: 否则的话你就需要每次生成号码是都需要往数据库查询是否存在 而生成号码池操作可以异步预先执行

支持(0) 反对(0) DreamCatt | 园豆:235 (菜鸟二级) | 2020-11-23 10:24

@DreamCatt: 明白了。感谢

支持(0) 反对(0) 荒城漠海 | 园豆:74 (初学一级) | 2020-11-23 10:26
0

如果重复了,会有数据库异常产生,捕捉这个异常并提醒用户输入不通的帐号。我猜猜你是想问这个。

会长 | 园豆:9566 (大侠五级) | 2020-11-23 09:59

号码是服务端自动生成的

支持(0) 反对(0) 荒城漠海 | 园豆:74 (初学一级) | 2020-11-23 10:18

@荒城漠海: 腾讯的QQ号可以这样产生:新来的注册者分配最大的号加上1就行了,可以加锁防止重复,如果量太大,也可以通过某些手段尽可能避免重复出现,如身份证,北京的和天津的必然不会重复

支持(0) 反对(0) 会长 | 园豆:9566 (大侠五级) | 2020-11-23 14:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册