MySQL更好的方法来检查重复条目

时间:2014-04-27 05:32:33

标签: php mysql sql

对于MySQL中的我的user表,在输入新的用户ID和&之前避免重复的用户ID,我检查是否存在类似的ID。对我来说有3种方法:

  1. 查询新的用户ID(SELECT ...)并检查返回的0行。如果存在行,则请求新的用户ID,否则为(INSERT...

  2. userid表中生成UNIQUEuser,如果INSERT...行受影响,则直接0,然后请求新的用户ID

  3. userid表格中设置UNIQUEuser,如果INSERT...,则直接mysqli_errno ($link)==1062,然后请求新的用户ID

  4. 我目前使用第一种方法,但它导致2次查询并打算切换到第二种方法。我在书中找到了第三种方法让我感到困惑!

    我的问题是

    • 第二种方法更适合重复进入吗?
    • 是第二和第二第3次是相同还是不同?
    • 是否还有更好的方法来防止使用最小数据库查询重复输入?

2 个答案:

答案 0 :(得分:1)

以下是我的答案:

  1. 第二种方法更适合重复进入吗?

    是的,在我看来,第二种方法更好,如果您知道userid将始终是唯一的,那么您应该将其设为unique字段,MySQL会自动处理它

  2. 是第二个&第三种方法相同或不同?

    我认为两者都是相同的,MySQL会在这些情况下抛出错误。

  3. 是否还有更好的方法可以防止重复输入最小数据库查询?

    您可以将UNIQUE INDEX放在此列上,这样会更快。

答案 1 :(得分:1)

1)复制应由您的数据库通过make unique字段来处理。

2)当您尝试在唯一字段中插入相同的数据时,它会给您一个错误。错误就像 -

ERROR 1062 (23000): Duplicate entry '2147483647' for key 'UNIQUE'

3)因此,为避免此类错误,您必须检查代码中已有的数据。

<强>结论:

你必须使用1&amp;平行的2种方法是100%确保您的表中不存在重复的条目。