我们说我的动态号码是唯一的ID。
我想将它们插入数据库。但是如果我已经有了某个ID(UNIQUE),我需要添加到已经存在的值。
我已经尝试过使用" ON KEY UPDATE" ,但它并没有真正发挥作用。选择旧数据以便我们可以添加它然后更新它,效率不高。
是否有任何查询可以做到这一点?
答案 0 :(得分:0)
在应用程序中增加您的价值并不能保证由于并发问题,您的数据库中始终会有准确的结果。例如,如果两个Web请求需要使用相同的ID递增数字,这取决于计算机何时切换CPU上的进程,您可以让请求相互覆盖。
而是执行类似于以下的更新:
UPDATE `table` SET `number` = `number` + 1 WHERE `ID` = YOUR_ID
检查语句的返回值。更新应该返回受影响的行数,因此如果值为1,您可以继续高兴地知道您尽可能高效。另一方面,如果返回值为0,那么您必须运行后续的insert语句来添加新的ID / Value。
这也是确保并发的最安全的方法。
希望这会有所帮助并祝你好运!
答案 1 :(得分:-1)
做了些不同的事情。我没有更新旧值,而是插入新数据并留下旧数据,但是使用某些唯一身份因此我不会重复。现在要显示该数据,我使用带有sum属性的简单选择查询,然后按ID对其进行分组。效果很好,只是不知道它是否是最有效的方法。