sql >> Database >  >> RDS >> Mysql

Mysql - Voorkomen van dubbele invoer van gecombineerde kolommen met Unieke Index

Uw vraag:"Kan ik dit bereiken met een mysql-query met behulp van een unieke index? "

Het antwoord is 100% ja.

Er zijn twee manieren om een ​​index te maken:

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

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

Dit werkt echter alleen als uw tabel geen bestaande dubbele gegevens bevat. Anders krijg je een foutmelding zoals deze:

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

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

Daarom moet u:

  1. maak een nieuwe lege tabel die lijkt op uw targets tafel.
  2. maak een unieke index.
  3. INSERT IGNORE gegevens uit de oude tabel.
  4. Hernoem targets naar targets_old en targets_new naar targets .

Voorbeeld:

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. Regels voor het implementeren van TDD in het oude project

  2. MyBatis opsomming van gebruik

  3. PostgreSQL Regex-woordgrenzen?

  4. PostgreSQL BESCHRIJVINGSTABEL