【发布时间】:2019-02-06 14:09:55
【问题描述】:
在与一些同事交谈时,他们说我们不应该使用 SELECT 检查唯一键是否已经存在。检查必须通过数据库返回的约束错误来完成。
我有以下场景:
我需要向用户返回一条消息,告知用户名 OR 邮箱已经注册(用户名和邮箱是唯一键)。
我需要生成密码哈希来插入新用户。
如果我根据数据库返回的违反约束的错误验证用户名和电子邮件(都是唯一键),我不知道是用户名还是已注册的电子邮件。
如果我只是在检查用户名和电子邮件是否存在之前将用户插入数据库,并且其中一个或另一个已经存在,那么我将浪费不必要的处理时间来生成密码哈希。
在这种情况下,最好的方法是什么?如果在 INSERT 之前使用 SELECT,请考虑数据完整性。
【问题讨论】:
标签: postgresql validation constraints