【发布时间】:2018-02-26 14:49:30
【问题描述】:
我正在 node.js 中开发登录/注册系统。
我通常查询数据库,检查给定的用户名是否已经存在,如果不存在,我创建新用户。
我最近有了一个想法,使用 MySQL 数据库中的唯一索引作为用户名。不过我有一些问题。
- 检查重复项的最有效方法是什么?在数据库中搜索给定的用户名,或者使用唯一索引并从 MySQL 中捕获错误(如果它已经存在)?
当出现重复时,我对 MySQL 吐出错误感到不安全,但也许我只是疯了。
- 如果我要使用唯一索引,对每个唯一值都使用它是否仍然有效?例如为用户名、电子邮件等设置唯一索引?
【问题讨论】:
-
您应该使用唯一键。唯一键不容易出现竞争条件。查询 SELECT 重复检查很容易出现竞争条件。