sql >> Database teknologi >  >> RDS >> Mysql

MySQL indsætter kun ny række, hvis kombinationen af ​​kolonner (som tillader dubletter) er unik

Opret et sammensat unikt indeks. Dette vil tillade et hvilket som helst antal dubletter i de individuelle felter, men kombinationen skal være unik.

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

...og brug INSERT IGNORE at indsætte, hvis det unikke indeks ikke er overtrådt. Hvis det er det, skal du bare ignorere indsættelsen.

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

En SQLfiddle til test .

Hvis du vil indsætte, medmindre der er en dublet, og opdatere hvis der er, kan du også bruge INSERT INTO ... ON DUPLICATE KEY UPDATE;

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

En anden SQLfiddle .




  1. MySQL standardværdi baseret på visning

  2. Sådan bestiller du hvor i felter i Laravel

  3. MySQL DATO-felt med standard CURDATE(). IKKE DATOTIME

  4. TypeError:'NoneType'-objektet kan ikke abonneres i Flask, mysql-applikationen