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

Mysql - Forhindring af duplikerede indtastninger af kombinerede kolonner med Unique Index

Dit spørgsmål:"Kan jeg opnå dette med en mysql-forespørgsel ved hjælp af unikt indeks? "

Svaret er 100 % ja.

Der er to måder at oprette indeks på:

1. CREATE UNIQUE INDEX index_name ON table_name (column1, column2, ...); 2. ALTER TABLE table_name ADD UNIQUE index_name (column1, column2, ...);

Dette vil dog kun fungere, hvis din tabel ikke har eksisterende duplikerede data. Ellers vil du modtage en fejlmeddelelse som denne:

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

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

Derfor skal du:

  1. opret en ny tom tabel svarende til dine targets tabel.
  2. opret unikt indeks.
  3. INSERT IGNORE data fra den gamle tabel.
  4. Omdøb targets til targets_old og targets_new til targets .

Eksempel:

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. Behold specialtegn, når du importerer til mysql fra csv

  2. Hvordan ændres datoformatet fra MM/DD/ÅÅÅÅ til ÅÅÅÅ-MM-DD i PL/SQL?

  3. Hvad er den bedste metode til at overføre parametre til SQLCommand?

  4. Forespørgsel for at hente alle rækker fra forrige måned