问题描述
如果没有重复值,我想更新它,并且在重复输入的情况下什么也不做,更新行也不会出错。
我发现ON DUPLICATE KEY在更新查询中不起作用。
解决方法
使用update ignore ...
语句代替简单的update ...
,只需要注意副作用(下面引用的最后一句)即可。正如update syntax上的mysql手册所述:
使用IGNORE修饰符,即使更新期间发生错误,更新语句也不会中止。在唯一键值上发生重复键冲突的行不会更新。更新为会导致数据转换错误的值的行将更新为最接近的有效值。
如果副作用不可接受,那么您需要在使用select ... for update
语句进行更新之前检查是否有重复的值,以锁定要更新的记录。第三种选择是忽略应用程序对此语句的错误处理中的重复键错误。老实说,我将采用最后一种解决方案。