MySql - ON DUPLICATE KEY 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;
+0
这是非常有帮助的,谢谢! :) – 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