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 .