Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql - Empêcher les entrées en double des colonnes combinées avec l'index unique

Votre question :"Puis-je y parvenir avec une requête mysql utilisant un index unique ? "

La réponse est oui à 100 %.

Il existe deux façons de créer un index :

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

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

Cependant, cela ne fonctionnera que si votre table ne contient pas de données en double existantes. Sinon, vous recevrez un message d'erreur comme celui-ci :

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

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

Par conséquent, vous devez :

  1. créez une nouvelle table vide similaire à vos targets tableau.
  2. créer un index unique.
  3. INSERT IGNORE données de l'ancienne table.
  4. Renommer les targets à targets_old et targets_new aux targets .

Exemple :

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;