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

MySQL inserisce una nuova riga solo se la combinazione di colonne (che consente duplicati) è unica

Crea un indice univoco composito. Ciò consentirà un numero qualsiasi di duplicati nei singoli campi, ma la combinazione deve essere univoca.

CREATE UNIQUE INDEX ix_uq ON test (field1, field2, field3);

...e usa INSERT IGNORE da inserire se l'indice univoco non viene violato. Se lo è, ignora semplicemente l'inserto.

INSERT IGNORE INTO test (field1,field2,field3) VALUES (1,1,1);

Un SQLfiddle per i test .

Se vuoi inserire a meno che non ci sia un duplicato e aggiornare se c'è, puoi anche usare INSERT INTO ... ON DUPLICATE KEY UPDATE;

INSERT INTO test (field1, field2, field3) VALUES (1,1,1)
  ON DUPLICATE KEY UPDATE field4=field4+1;

Un altro SQLfiddle .