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

问题描述

如何在MysqL中更新唯一索引而又不会出现重复的输入错误

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

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

解决方法

使用update ignore ...语句代替简单的update ...,只需要注意副作用(下面引用的最后一句)即可。正如update syntax上的mysql手册所述:

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...