據我所知,存在INSERT IGNORE
和INSERT ... ON DUPLICATE KEY UPDATE
。但是,當存在重複密鑰時,我想對臨時表執行INSERT
以記錄已違反的唯一密鑰,以便我可以將其輸出給用戶。MySql - ON DUPLICATE KEY INSERT
有什麼辦法可以做ON DUPLICATE INSERT
?如果有幫助,我試圖做一個批量插入。
據我所知,存在INSERT IGNORE
和INSERT ... ON DUPLICATE KEY UPDATE
。但是,當存在重複密鑰時,我想對臨時表執行INSERT
以記錄已違反的唯一密鑰,以便我可以將其輸出給用戶。MySql - ON DUPLICATE KEY INSERT
有什麼辦法可以做ON DUPLICATE INSERT
?如果有幫助,我試圖做一個批量插入。
使用ON DUPLICATE KEY UPDATE
,您不能插入到另一個表中 - 也沒有可用的替代功能。
兩個自定義/替代方法可以做到這一點:
使用stored procedure
在接受這個問題的答案概述:MySQL ON DUPLICATE KEY insert into an audit or log table
創建trigger
是記錄每次INSERT
爲你的餐桌到另一個表中並查詢充滿「日誌」的表以查找任何重複項。
類似的東西來這應該工作:
CREATE TABLE insert_logs (
id int not null
);
delimiter |
CREATE TRIGGER insert_logs_trigger BEFORE INSERT ON your_table
FOR EACH ROW BEGIN
INSERT INTO insert_logs SET id = NEW.id;
END;
|
要獲得該表中的副本的列表,你可以我們:
SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;
這是非常有幫助的,謝謝! :) – matt 2012-08-15 00:54:49
可能重複的[MySQL在重複鍵插入審計或日誌表](http://stackoverflow.com/questions/3884344/mysql-on-duplicate-key-insert-into-an-audit-or-log-table) – 2012-08-14 18:39:39