项目需求
有这样一种场景,一个用户表,昵称要求唯一性,用户在注册的时候,如果输入的昵称已存在,要求明确提示用户昵称已存在。而不是提示一个宽泛的错误信息,如注册失败。在高并发场景下该如何实现。
实际思考
- 正常的思路,用户注册的时候,根据用户昵称去查询是否存在。不存在则创建,存在则提示用户。
- 第1点中存在问题。如果并发高的情况下,去执行查询,存在插入的操作还没插入到数据库,得到的结果就是空。
- 第二种思路,直接给该列创建唯一索引。但是代码层面只能得到MySQL执行错误,没法根据错误判断是那类型的错误。
创建唯一索引,错误信息中会返回
Duplicate entry
给你