sql >> Databasteknik >  >> RDS >> Mysql

MySql - PÅ DUBLIKATNYCKELINSTÄLLNING

Med ON DUPLICATE KEY UPDATE , kan du inte infoga i en annan tabell - och det finns inte heller någon alternativ funktion tillgänglig.

Två anpassade/alternativa sätt du kan åstadkomma detta:

  1. Med en stored procedure som beskrivs i det accepterade svaret på denna fråga:MySQL PÅ DUBLIKATNYCKEL infogas i en gransknings- eller loggtabell

  2. Skapa en trigger som loggade varje INSERT för din tabell till en annan tabell och fråga tabellen full av "loggar" för eventuella dubbletter.

Något liknande detta borde fungera:

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

För att få en lista över dubbletter i tabellen kan du:

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


  1. MySQL datum och tid funktioner finns inte

  2. Glassfish Admin Console kastar java.lang.IllegalStateException när JDBC Pool skapas

  3. Importerar zippad CSV-fil till PostgreSQL

  4. EF Core 2.0 Identity - Lägger till navigeringsegenskaper