检查应用程序和数据库中的值是否唯一是否是多余的?

时间:2015-03-13 12:36:00

标签: php mysql

因此,让我们说用户注册一个帐户,我想检查所使用的电子邮件是否已经与另一个帐户关联...

在数据库方面,我在电子邮件列上添加了一个唯一约束。现在在应用程序端,我应该运行查询以检查该电子邮件是否已被使用,然后如果不是,则运行另一个查询以插入用户?或者我应该忽略该步骤,因为我已经在数据库列中有一个唯一约束,我应该尝试插入用户,如果我收到错误,我知道该电子邮件已在使用中?

正在运行查询只是为了检查电子邮件是多余的,还是必要的步骤以及为什么?

我正在使用PHP和MySQL。

1 个答案:

答案 0 :(得分:1)

是的,这是多余的,但您可能想要这样做。

你有两个选择:

  1. 签入应用,然后添加到数据库。那里存在竞争条件,因此您需要将检查集包装在应用程序级互斥锁中,或
  2. 只需进入数据库并捕获从数据库层和句柄引发的任何异常(注意区分列异常的约束违规与所有其他可能的运行时异常)。
  3. 根据这两种方法的相对容易程度,确定适合您的方法。