重复密钥更新 - 增加2

时间:2014-08-11 21:32:16

标签: php mysql sql insert duplicates

我将搜索词插入数据库,当我运行它进行测试时,我看到重复数据插入到数据库中。我能够解决这个问题,但是,现在我正在插入,它不再作为重复插入,但我试图让重复工作 - 并且重复更新每次2的流行度?我在这里有什么不对?

$entryDate = date("c");
$insertsearchquery="insert into article_searches (termSafe,entryDate) values (\"$termSafe\",\"$entryDate\") on duplicate key update popularity=popularity+1";

mysql_query($insertsearchquery);

我为termSafe和entryDate设置了一个UNIQUE键。

TABLE `article_searches` (
`id`  bigint(20) NOT NULL AUTO INCREMENT ,
`termSafe` varchar(150) ,
`entryDate`  varchar(255),
`popularity` tinyint(6) UNSIGNED NOT NULL,
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `termSafe` USING BTREE (`termSafe`),
UNIQUE INDEX `entryDate` USING BTREE (`entryDate`)
)

虽然我刚刚删除了entryDate唯一索引。

2 个答案:

答案 0 :(得分:0)

我猜这是因为你有一个UNIQUE(termSafe)和UNIQUE(entryDate),也许你只想要一个UNIQUE(termSafe,entryDate)。

请注意{@ 1}}函数已被弃用..您应该使用PDO或mysql_*代替。

答案 1 :(得分:0)

尝试删除两个唯一索引并仅创建一个:

 create unique index idx_article_searches_termSafe_EntryDate on article_searches(termSafe, EntryDate);

使用on duplciate key update时,如果检测到多个唯一约束违规,则行为可能会定义不明确。我认为它正在进行两次更新,每次约束一次。

Here是文档中的警告:

  

通常,您应该尽量避免使用ON DUPLICATE KEY UPDATE   具有多个唯一索引的表的子句。