Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL n'insère une nouvelle ligne que si la combinaison de colonnes (qui autorise les doublons) est unique

Créez un index unique composite. Cela autorisera n'importe quel nombre de doublons dans les champs individuels, mais la combinaison doit être unique.

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

...et utilisez INSERT IGNORE à insérer si l'index unique n'est pas violé. Si c'est le cas, ignorez simplement l'insertion.

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

Un SQLfiddle pour tester .

Si vous souhaitez insérer à moins qu'il y ait un doublon et mettre à jour s'il y en a un, vous pouvez également utiliser INSERT INTO ... ON DUPLICATE KEY UPDATE;

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

Un autre SQLfiddle .