CREATE TABLE IF NOT EXISTS `table` (
`id` int(11) NOT NULL DEFAULT '0',
`uniq_id` int(11) NOT NULL DEFAULT '0',
`uniq_cat` varchar(20) NOT NULL DEFAULT '0',
`value` varchar(255) NOT NULL
);
ALTER TABLE `table`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `uniq_id` (`uniq_id`,`uniq_cat`);
INSERT INTO `table` (uniq_id, uniq_cat, value)
VALUES ("1", "1", "ONE")
ON DUPLICATE KEY UPDATE value = value;
INSERT INTO `table` (uniq_id, uniq_cat, value)
VALUES ("1", "1", "TWO")
ON DUPLICATE KEY UPDATE value = value;
SELECT * FROM `table`
给出值= “ONE”
WHY ???
在第二刀片应该从“一”到“二”被覆盖,但这种情况不会发生mysql:插入〜重复键(多重唯一,不是pimary键)更新。不起作用
http://sqlfiddle.com/#!2/e443e/1
'对重复密钥更新值=价值;'意味着什么都不做是有过一个名为'value'值。这就是为什么你的插入不会覆盖数据 – Hearner