Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySql - AUF DOPPELTEM SCHLÜSSEL EINFÜGEN

Mit ON DUPLICATE KEY UPDATE , können Sie nicht in eine andere Tabelle einfügen - es steht auch keine alternative Funktion zur Verfügung.

Zwei benutzerdefinierte/alternative Möglichkeiten, wie Sie dies erreichen können:

  1. Verwenden einer stored procedure wie in der akzeptierten Antwort auf diese Frage beschrieben:MySQL ON DUPLICATE KEY in eine Audit- oder Log-Tabelle einfügen

  2. Einen trigger erstellen das jeden INSERT protokolliert hat für Ihre Tabelle in eine andere Tabelle und Abfragen der Tabelle voller "Protokolle" auf Duplikate.

Etwas Ähnliches sollte funktionieren:

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

Um eine Liste der Duplikate in der Tabelle zu erhalten, könnten Sie uns:

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