sql >> Databáze >  >> RDS >> Mysql

MySql – PŘI VLOŽENÍ DUPLIKÁTNÍHO KLÍČE

S ON DUPLICATE KEY UPDATE , nemůžete vložit do jiné tabulky - ani není k dispozici alternativní funkce.

Dva vlastní/alternativní způsoby, jak toho dosáhnout:

  1. Pomocí stored procedure jak je uvedeno v přijaté odpovědi na tuto otázku:MySQL ON DUPLICATE KEY vložení do tabulky auditu nebo protokolu

  2. Vytvoření trigger který zaznamenal každý INSERT pro vaši tabulku do jiné tabulky a dotazování tabulky plné "protokolů" na případné duplikáty.

Něco podobného by mělo fungovat:

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

Chcete-li získat seznam duplikátů v tabulce, můžete nám:

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


  1. Jak zobrazit aktuální nastavení pro nulový výstup v PostgreSQL (psql)

  2. SqlConnection SqlCommand SqlDataReader IDisposable

  3. Jak mohou automatické aktualizace statistik ovlivnit výkon dotazů

  4. Chyba SQL dotazu WordPress MySQL ve třídě WPDB