【问题标题】:MySQL better approach to check duplicate entryMySQL 检查重复条目的更好方法
【发布时间】:2014-06-12 17:48:52
【问题描述】:

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

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

  2. user 表中创建useridUNIQUE,如果0 行受到影响,则直接创建INSERT... 然后请求新用户ID

  3. user 表中创建useridUNIQUE,如果mysqli_errno ($link)==1062 则直接创建INSERT... 然后请求新用户ID

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

我的问题是

  • 第二种方法是否更适合防止重复输入?
  • 第 2 次和第 3 次方法是相同还是不同?
  • 是否还有更好的方法来防止使用最少的 DB Query 重复输入?

【问题讨论】:

标签: php mysql sql


【解决方案1】:

这是我的答案:

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

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

  2. 第 2 和第 3 方法是相同还是不同?

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

  3. 还有没有更好的方法来防止使用最少的 DB Query 重复输入?

    你可以把UNIQUE INDEX放在这个专栏里,这样会更快。

【讨论】:

    【解决方案2】:

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

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

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

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

    结论:

    您必须同时使用 1 和 2 种方法才能 100% 确保表中不存在重复条目。

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2013-10-04
      • 1970-01-01
      相关资源
      最近更新 更多