Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySql - SUR L'INSERTION DE CLÉ EN DOUBLE

Avec ON DUPLICATE KEY UPDATE , vous ne pouvez pas insérer dans une autre table - il n'y a pas non plus de fonction alternative disponible.

Vous pouvez y parvenir de deux manières personnalisées/alternatives :

  1. Utiliser une stored procedure comme indiqué dans la réponse acceptée à cette question :Insérer MySQL ON DUPLICATE KEY dans une table d'audit ou de journal

  2. Création d'un trigger qui a enregistré chaque INSERT pour votre table dans une autre table et en interrogeant la table pleine de "journaux" pour tout doublon.

Quelque chose de similaire à ceci devrait fonctionner :

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

Pour obtenir une liste des doublons dans le tableau, vous pouvez :

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