我有更新行的问题。我有一个名为serialNum
的列varchar(50) not null unique default null
当我从合作伙伴公司获得响应数据时,我将根据唯一serial_num
(我们公司的序列号)更新行。
有时更新因以下原因失败:
Duplicate entry 'xxxxxxxx' for key 'serialNum'
但是当我搜索整个表时,更新的值不存在。它有时会发生,而不是总是如此,大概是300次中的10次。
为什么会发生这种情况,我该如何解决?
下面是我用来更新的查询:
String updateQuery = "update phone set serialNum=?, Order_state=?, Balance=? where Serial_num=" + resultSet.get("jno_cli");
PreparedStatement presta = con.prepareStatement(updateQuery);
presta.setString(1, resultSet.get("oid_goodsorder"));
presta.setString(2, "order success");
presta.setFloat(3, Float.valueOf(resultSet.get("leftmoney")));
presta.executeUpdate();
答案 0 :(得分:0)
我认为原因是resultSet.get("oid_goodsorder")
你在哪里得到这个结果? 'oid_goodsorder'是独一无二的吗?你总是更新整张桌子吗?
如果 oid_goodsorder 是唯一的,则可能在serialNum
中有重复项,因为您不使用批量更新,而是单独更新每条记录,因此可以:
之前:
的 SERIALNUM = 11,22,33,44
oid_goodsorder = 44,11,22,33 强>
它尝试将第一个serialNum
更新为44,但44存在!
但如果你完成所有更新serialNum
将是唯一的...
serialNum
不唯一,并检查表格是否重复serialNum