为什么我的ON DUPLICATE KEY UPDATE
语句无法正常工作,我正在以某种方式在我的表中没有重复项。随着下面的代码,我得到复制MYSQL重复键不能正常工作
CMS::insertQuery("INSERT INTO {table} SET canid=?, categoryid=? ON DUPLICATE KEY UPDATE canid=?, categoryid=?", array($emailCheck['id'], $id, $emailCheck['id'], $id));
DB:
CREATE TABLE `table` ( `canid` int(10) NOT NULL, `categoryid` int(10) NOT NULL, UNIQUE KEY `canid` (`canid`,`categoryid`)) ENGINE=MyISAM DEFAULT CHARSET=latin1
我试图电流线路运行:
CMS::insertQuery("INSERT INTO {table} SET canid=?, categoryid=? ON DUPLICATE KEY UPDATE canid=?, categoryid=? WHERE canid=?, categoryid=?", array($emailCheck['id'], $id, $emailCheck['id'], $id,$emailCheck['id'],$id));
你对canid和categoryid有独特的组合键吗? –
@ G-Nugget解释一下? –
如果插入操作违反唯一键,那么'ON DUPLICATE KEY UPDATE'只执行更新部分。没有一个唯一的密钥,没有什么可以检查重复。我的第一个评论是不正确的,因为我的意思是,只要在任一列上都有一个唯一的键被触发,而不一定是两者,那么'UPDATE'就会被执行。 –