sql >> Base de Datos >  >> RDS >> Mysql

MySQL solo inserta una nueva fila si la combinación de columnas (que permiten duplicados) es única

Cree un índice único compuesto. Esto permitirá cualquier cantidad de duplicados en los campos individuales, pero la combinación debe ser única.

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

...y usa INSERT IGNORE para insertar si no se viola el índice único. Si es así, simplemente ignore el inserto.

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

Un SQLfiddle para pruebas .

Si desea insertar a menos que haya un duplicado y actualizar si lo hay, también puede usar INSERT INTO ... ON DUPLICATE KEY UPDATE;

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

Otro SQLfiddle .