で減少値は、次の私にオッズを思わ:- MySQLの
INSERT INTO sometable (UNIQUEVALUE,NUMERICVALUE) VALUES ('valuethatexists','100') ON DUPLICATE KEY UPDATE NUMERICVALUE = NUMERICVALUE+VALUES(NUMERICVALUE);
は、あなたのNUMERICVALUE
は、上記の100に変更します0
であると仮定 - 仕事をしています。
ただし、-100を入力すると正しく動作しません。
INSERT INTO sometable (UNIQUEVALUE,NUMERICVALUE) VALUES ('valuethatexists','-100') ON DUPLICATE KEY UPDATE NUMERICVALUE = NUMERICVALUE+VALUES(NUMERICVALUE);
上記の文は、0に戻す必要があります。私の場合はそうではありません。それは100のままです。
私に何かが不足していますか?
編集:これは他の場所で間違っています。私はPHPでこれをやっています。このバグを示す実際のコードは次のようになります。
編集2:これはPHPとは関係ありません。問題は、使用前にVALUES(NUMERICVALUE)が-100から0になったことを意味する、NUMERIC値が私の実稼働環境でUNSIGNEDになっていたことです。私のMySQLサーバ(5.7.12)で
私はSQLFiddelと自分の5.7 DBを試しました。あなたは正しい。それは期待通りだった。私はPHPでこれをやっていますが、明らかにこれはどこかで間違っています。私はさらに調査を試みます。 – nickdnk
良い、ちょうど一度に問題を隔離しようとしてください:) – Benjamin
PHPの例で更新された答えを参照してください。 – nickdnk