Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL fügt nur dann eine neue Zeile ein, wenn die Kombination von Spalten (die Duplikate zulassen) eindeutig ist

Erstellen Sie einen zusammengesetzten eindeutigen Index. Dies erlaubt beliebig viele Duplikate in den einzelnen Feldern, aber die Kombination muss eindeutig sein.

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

...und verwenden Sie INSERT IGNORE einzufügen, wenn der eindeutige Index nicht verletzt wird. Wenn ja, ignorieren Sie einfach die Einfügung.

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

Ein SQLfiddle zum Testen .

Wenn Sie einfügen möchten, es sei denn, es gibt ein Duplikat, und aktualisieren, falls vorhanden, können Sie auch INSERT INTO ... ON DUPLICATE KEY UPDATE verwenden;

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

Eine weitere SQLfiddle .