在插入之前检查是否存在某些东西是不好的做法

时间:2019-09-17 01:45:56

标签: mysql sql

只是想知道是否在插入之前检查是否存在某些东西吗?

例如

  1. 通过在数据库上使用SELECT检查用户名不存在。可以告诉客户端用户名已经存在。
  2. 将用户名插入数据库(具有UNIQUE)。记录此处发生的任何错误。

  1. 使用NOT EXISTS将用户名插入数据库。如果返回错误,请告知客户端用户名已存在。

1 个答案:

答案 0 :(得分:3)

最好的方法是利用唯一约束。忽略约束冲突(使用on duplicate key update)或处理错误。

您也可以在插入表之前进行检查。这可以使您更好地自定义错误消息(例如,如果表上有多个唯一约束)。但是您不想依靠这种检查,因为它们很容易出现比赛条件。同时多次插入可能最终会插入同一行,因为每次“看到”该表都不包含该行。