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:
-
Usando umstored procedure
conforme descrito na resposta aceita a esta pergunta:MySQL ON DUPLICATE KEY insere em uma tabela de auditoria ou log
-
Criando umtrigger
que registrou cadaINSERT
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;