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不是unique。您需要UNIQUE在表格中有一个字段才能ON DUPLICATE KEY UPDATE工作。如果没有设置,可以执行下面这条语句。

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