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

MySql - PÅ DUBLIKAT NØGLEINDSÆTNING

Med ON DUPLICATE KEY UPDATE , kan du ikke indsætte i en anden tabel - og der er heller ikke en alternativ funktion tilgængelig.

To brugerdefinerede/alternative måder du kan opnå dette på:

  1. Brug af en stored procedure som beskrevet i det accepterede svar på dette spørgsmål:MySQL PÅ DUBLIKAT NØGLE indsættes i en revisions- eller logtabel

  2. Oprettelse af en trigger der loggede hver INSERT for din tabel til en anden tabel og forespørge tabellen fuld af "logfiler" for eventuelle dubletter.

Noget lignende dette burde virke:

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

For at få en liste over dubletterne i tabellen kan du:

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


  1. MySQL str_to_date producerer NULL trods gyldig formatering

  2. Sådan fungerer Unicode() i SQLite

  3. Sådan kører du flere MySQL-forekomster på samme maskine

  4. Mulige konsekvenser af at øge varchar-længden i MySql?