Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL вмъква нов ред само ако комбинацията от колони (които позволяват дубликати) е уникална

Създайте съставен уникален индекс. Това ще позволи произволен брой дубликати в отделните полета, но комбинацията трябва да е уникална.

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

...и използвайте INSERT IGNORE за вмъкване, ако уникалният индекс не е нарушен. Ако е така, просто игнорирайте вмъкването.

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

SQLfiddle за тестване .

Ако искате да вмъкнете, освен ако няма дубликат, и да актуализирате, ако има, можете също да използвате INSERT INTO ... ON DUPLICATE KEY UPDATE;

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

Още един SQLfiddle .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. безопасно ли е да се напише mysql_connect (localhost, root, mypasswd) във файл?

  2. Редовен израз за съвпадение с MySQL коментари

  3. какво не е наред с тази Magento заявка?

  4. Как мога да се отърва от тези коментари в MySQL дъмп?

  5. SQL урок за първичен ключ – Как да дефинирате първичен ключ в база данни