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