MySQL的 - 对重复钥匙插入(MySql - ON DUPLICATE KEY INSERT)

2019-06-27 00:34发布

据我所知,存在INSERT IGNOREINSERT ... ON DUPLICATE KEY UPDATE 。 但是,如果有重复的关键,我希望做一个INSERT到一个临时表,以保持已违反了唯一键的记录,这样我可以输出给用户。

有什么方法可以让我做一个ON DUPLICATE INSERT ? 如果有帮助,我试图做一个批量插入。

Answer 1:

随着ON DUPLICATE KEY UPDATE ,你不能插入到另一个表-也没有可用的替代功能。

两个自定义/你能做到这一点的替代方法:

  1. 使用stored procedure作为接受这个问题的答案概述: MySQL在重复键插入一个审计或日志表

  2. 创建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;


文章来源: MySql - ON DUPLICATE KEY INSERT