sql >> Databasteknik >  >> RDS >> Mysql

Mysql - Förhindrar dubbletter av kombinerade kolumner med Unique Index

Din fråga:"Kan jag uppnå detta med en mysql-fråga med ett unikt index? "

Svaret är 100 % ja.

Det finns två sätt att skapa index:

1. CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);

2. ALTER TABLE table_name 
ADD UNIQUE index_name (column1, column2, ...);

Detta kommer dock bara att fungera om din tabell inte har befintliga dubbletter av data. Annars får du ett felmeddelande så här:

Query: CREATE UNIQUE INDEX index_name ON targets (a, b)

Error Code: 1062
Duplicate entry 'photo-url1' for key 'index_name'

Därför måste du:

  1. skapa en ny tom tabell som liknar dina targets tabell.
  2. skapa ett unikt index.
  3. INSERT IGNORE data från den gamla tabellen.
  4. Byt namn på targets till targets_old och targets_new till targets .

Exempel:

CREATE TABLE targets_new LIKE targets;

CREATE UNIQUE INDEX index_name
ON targets_new (a, b);

INSERT IGNORE INTO targets_new SELECT * FROM targets;

RENAME TABLE targets TO targets_old;
RENAME TABLE targets_new TO targets;


  1. Hur hittar man beroenden i ett orakelpaket?

  2. Gör SQL Server-prestanda lätt

  3. mysql while loop Break motsvarande

  4. Hitta närmaste plats med postnummer?