MySQL重复列逻辑处理?

项目需求

有这样一种场景,一个用户表,昵称要求唯一性,用户在注册的时候,如果输入的昵称已存在,要求明确提示用户昵称已存在。而不是提示一个宽泛的错误信息,如注册失败。在高并发场景下该如何实现。

实际思考

  1. 正常的思路,用户注册的时候,根据用户昵称去查询是否存在。不存在则创建,存在则提示用户。
  2. 第1点中存在问题。如果并发高的情况下,去执行查询,存在插入的操作还没插入到数据库,得到的结果就是空。
  3. 第二种思路,直接给该列创建唯一索引。但是代码层面只能得到MySQL执行错误,没法根据错误判断是那类型的错误。
阅读 2.8k
3 个回答

创建唯一索引,错误信息中会返回 Duplicate entry 给你

创建唯一索引限制已经是最后的保障来!使用PDO 操作数据库,如果数据库操作出错会有相应的 Exception异常返回。你可以构造一个重复添加,观察下返回的Excetion 是什么异常,然后Insert 的地方,捕获该异常类型然后做出你需要的提示信息返回给前端。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题