【问题标题】:avoid duplicate entry error in updating unique column [duplicate]避免更新唯一列时出现重复输入错误[重复]
【发布时间】:2020-08-30 07:27:10
【问题描述】:

如何在mysql中更新唯一索引而不出现重复条目​​错误?

如果没有重复值,我想更新它,并且在重复条目的情况下什么都不做,更新行都不会出错。

我发现 ON DUPLICATE KEY 在更新查询中不起作用。

【问题讨论】:

    标签: mysql database-indexes


    【解决方案1】:

    使用update ignore ... 语句而不是简单的update ...,请注意副作用(下面引用的最后一句)。正如update syntax 上的 mysql 手册所说:

    使用 IGNORE 修饰符,即使更新期间发生错误,更新语句也不会中止。不会更新在唯一键值上发生重复键冲突的行。更新为会导致数据转换错误的值的行将更新为最接近的有效值。

    如果您不能接受副作用,那么您需要在更新前检查重复值,然后使用 select ... for update 语句锁定要更新的记录。第三种选择是在应用程序对该语句的错误处理中忽略重复的键错误。老实说,我会选择最后一种解决方案。

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      相关资源
      最近更新 更多