Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql - Предотвратяване на дублиращи се записи на комбинирани колони с уникален индекс

Вашият въпрос:"Мога ли да постигна това с mysql заявка, използвайки уникален индекс? "

Отговорът е 100% да.

Има два начина за създаване на индекс:

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

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

Това обаче ще работи само ако таблицата ви няма съществуващи дублиращи се данни. В противен случай ще получите съобщение за грешка като това:

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

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

Следователно, трябва да:

  1. създайте нова празна таблица, подобна на вашите targets маса.
  2. създайте уникален индекс.
  3. INSERT IGNORE данни от старата таблица.
  4. Преименувайте targets към targets_old и targets_new към targets .

Пример:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изчислим ранга в MySQL

  2. Записване на началото на сесията на 1 страница или на всички страници?

  3. Как да създадете ssh тунел в ruby ​​и след това да се свържете с mysql сървър на отдалечения хост

  4. Форматирайте числото до 2 знака след десетичната запетая

  5. Как да накарам MySQL да обработва UTF-8 правилно