据我所知,存在INSERT IGNORE
和INSERT ... ON DUPLICATE KEY UPDATE
。 但是,如果有重复的关键,我希望做一个INSERT
到一个临时表,以保持已违反了唯一键的记录,这样我可以输出给用户。
有什么方法可以让我做一个ON DUPLICATE INSERT
? 如果有帮助,我试图做一个批量插入。
据我所知,存在INSERT IGNORE
和INSERT ... ON DUPLICATE KEY UPDATE
。 但是,如果有重复的关键,我希望做一个INSERT
到一个临时表,以保持已违反了唯一键的记录,这样我可以输出给用户。
有什么方法可以让我做一个ON DUPLICATE INSERT
? 如果有帮助,我试图做一个批量插入。
随着ON DUPLICATE KEY UPDATE
,你不能插入到另一个表-也没有可用的替代功能。
两个自定义/你能做到这一点的替代方法:
使用stored procedure
作为接受这个问题的答案概述: MySQL在重复键插入一个审计或日志表
创建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;