Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O MySQL só insere uma nova linha se a combinação de colunas (que permitem duplicatas) for única


Crie um índice exclusivo composto. Isso permitirá qualquer número de duplicatas nos campos individuais, mas a combinação precisa ser exclusiva.
CREATE UNIQUE INDEX ix_uq ON test (field1, field2, field3);

...e use INSERT IGNORE para inserir se o índice exclusivo não for violado. Se for, apenas ignore a inserção.
INSERT IGNORE INTO test (field1,field2,field3) VALUES (1,1,1);

Um SQLfiddle para teste .

Se você quiser inserir a menos que haja uma duplicata e atualizar se houver, você também pode usar INSERT INTO ... ON DUPLICATE KEY UPDATE;
INSERT INTO test (field1, field2, field3) VALUES (1,1,1)
  ON DUPLICATE KEY UPDATE field4=field4+1;

Outro SQLfiddle .