我有一個表:MySQL的:當唯一索引碰撞更新行
CREATE TABLE `IDM_USER_MEASURE` (
`USER_ID` bigint(20) NOT NULL,
`MEASURE_ID` bigint(20) NOT NULL,
`MEASURE_DATE` int(11) NOT NULL,
`MEASURE_STATUS` int(11) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
而且我添加了一個唯一索引:
ALTER TABLE `IDM_USER_MEASURE`
ADD UNIQUE KEY unique_measure (`USER_ID`, `MEASURE_ID`, `MEASURE_DATE`);
我現在做到以下幾點:
INSERT INTO `IDM_USER_MEASURE`(`USER_ID`, `MEASURE_ID`, `MEASURE_DATE`, `MEASURE_STATUS`) VALUES(1, 1, "bla", "status one");
INSERT INTO `IDM_USER_MEASURE`(`USER_ID`, `MEASURE_ID`, `MEASURE_DATE`, `MEASURE_STATUS`) VALUES(1, 1, "bla", "status updated");
這不起作用,因爲唯一的索引,但我想舊的行更新,使「狀態之一」成爲「狀態更新」。
如何在唯一索引發生衝突時自動更新我的行?
謝謝您的回答。換成是粉碎索引不是嗎?我想我找到了一個很好的解決方案:'INSERT INTO'IDM_USER_MEASURE'('USER_ID','MEASURE_ID','MEASURE_DATE','MEASURE_STATUS')VALUES(1,1,「bla」,「status updated」)ON DUPLICATE KEY UPDATE MEASURE_STATUS = VALUES(MEASURE_STATUS);' – Mulgard
是的,它是刪除然後插入。如果你有一個巨大的數據集,這並不好。 – miken32