MYSQL ON DUPLICATE KEY UPDATE没有更新

时间:2013-06-03 02:09:46

标签: php mysql

我在重复键语句上有一个mysql。

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

id  classify  apply

1   A         1

但它没有更新现有的行,而是继续添加另一行,问题在哪里?

2 个答案:

答案 0 :(得分:2)

仅当您尝试插入会导致重复键错误的记录(如名称状态)时,

ON DUPLICATE KEY才会更新行。因此,只有在使用该列的唯一键或主键时才会发生这种情况。您似乎没有为classify列创建唯一键。

答案 1 :(得分:2)

classify可能不是unique。您需要在表格中添加UNIQUE字段才能使ON DUPLICATE KEY UPDATE生效。如果您尚未设置,则可以在下面执行此语句。

ALTER TABLE statistics ADD CONSTRAINT tb_uq UNIQUE (classify)