Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySql - NA INSERÇÃO DE CHAVE DUPLICADA


Com ON DUPLICATE KEY UPDATE , você não pode inserir em outra tabela - nem há uma função alternativa disponível.

Duas maneiras personalizadas/alternativas de fazer isso:

  1. Usando um stored procedure conforme descrito na resposta aceita a esta pergunta:MySQL ON DUPLICATE KEY insere em uma tabela de auditoria ou log

  2. Criando um trigger que registrou cada INSERT para sua tabela em outra tabela e consultando a tabela cheia de "logs" para quaisquer duplicatas.

Algo semelhante a isso deve funcionar:
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;
|

Para obter uma lista das duplicatas na tabela, você pode:
SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;