Mysql
 sql >> Database >  >> RDS >> Mysql

MySql - SU INSERTO CHIAVE DUPLICATO

Con ON DUPLICATE KEY UPDATE , non puoi inserire in un'altra tabella, né è disponibile una funzione alternativa.

Due modi personalizzati/alternativi per farlo:

  1. Utilizzo di una stored procedure come indicato nella risposta accettata a questa domanda:MySQL SU CHIAVE DUPLICATA viene inserito in una tabella di controllo o registro

  2. Creazione di un trigger che ha registrato ogni INSERT per la tua tabella in un'altra tabella e interrogando la tabella piena di "registri" per eventuali duplicati.

Qualcosa di simile dovrebbe funzionare:

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;
|

Per ottenere un elenco dei duplicati nella tabella, potresti:

SELECT id FROM insert_logs HAVING COUNT(id) > 1 GROUP BY id;