【发布时间】:2016-09-04 17:32:03
【问题描述】:
以下对我来说似乎很奇怪:
INSERT INTO sometable (UNIQUEVALUE,NUMERICVALUE) VALUES ('valuethatexists','100') ON DUPLICATE KEY UPDATE NUMERICVALUE = NUMERICVALUE+VALUES(NUMERICVALUE);
假设您的 NUMERICVALUE 为 0。
上面会将其更改为 100 - 这确实有效。
但是,如果您随后输入 -100,则无法正常工作。
INSERT INTO sometable (UNIQUEVALUE,NUMERICVALUE) VALUES ('valuethatexists','-100') ON DUPLICATE KEY UPDATE NUMERICVALUE = NUMERICVALUE+VALUES(NUMERICVALUE);
上面的语句应该将它返回到 0。在我的例子中它没有。它保持在 100。
我错过了什么吗?
编辑:这在其他地方出错了。我正在用 PHP 做这个。显示此错误的实际代码如下所示:
编辑 2:这也与 PHP 无关。问题是我的生产环境中的 NUMERIC 值是 UNSIGNED,这意味着 VALUES(NUMERICVALUE) 在使用之前从 -100 变为 0。
【问题讨论】:
标签: mysql increment decrement on-duplicate-key