在更新唯一列时避免重复输入错误

avoid duplicate entry error in updating unique column

如何更新 mysql 中的唯一索引而不出现重复输入错误?

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

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

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

With the IGNORE modifier, the update statement does not abort even if errors occur during the update. Rows for which duplicate-key conflicts occur on a unique key value are not updated. Rows updated to values that would cause data conversion errors are updated to the closest valid values instead.

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