2

重複キー ステートメントに関する mysql があります。

mysql_query("INSERT INTO statistics (classify, apply) VALUES ('$classify', 1) 
ON DUPLICATE KEY UPDATE apply = apply + 1");

id  classify  apply

1   A         1

しかし、それは既存の行を更新せず、別の行を追加し続けます。どこに問題がありますか?

4

2 に答える 2

2

ON DUPLICATE KEY重複キーエラーをスローするレコードを挿入しようとした場合にのみ行を更新します(名前の状態など)。したがって、これは、その列に一意のキーまたは主キーを使用している場合にのみ発生します。classify列の一意のキーを作成していないようです。

于 2013-06-03T02:11:24.787 に答える
2

おそらく列classifyはそうではありませんuniqueUNIQUE機能させるには、テーブルにフィールドが必要ですON DUPLICATE KEY UPDATE。設定していない場合は、以下のステートメントを実行できます。

ALTER TABLE statistics ADD CONSTRAINT tb_uq UNIQUE (classify)
于 2013-06-03T02:11:42.927 に答える