MySQL - сделать существующее поле уникальным - PullRequest
137 голосов
/ 18 февраля 2011

У меня уже есть таблица с полем, которое должно быть уникальным, но это не так.Я знаю это только потому, что в таблицу была внесена запись, которая имела то же значение, что и другая, уже существующая запись, и это вызвало проблемы.

Как сделать так, чтобы в этом поле принимались только уникальные значения?

Ответы [ 7 ]

263 голосов
/ 18 февраля 2011
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

Для MySQL 5.7.4 или более поздней версии:

ALTER TABLE mytbl ADD UNIQUE (columnName);

Начиная с MySQL 5.7.4, предложение IGNORE для ALTER TABLE удалено и его использование выдает ошибку.

Итак, не забудьте сначала удалить дубликаты записей, поскольку ключевое слово IGNORE больше не поддерживается.

Ссылка

31 голосов
/ 04 ноября 2013

Просто напишите этот запрос в вашей базе данных phpmyadmin.

ALTER TABLE TableName ADD UNIQUE (FieldName)

Например: ALTER TABLE user ADD UNIQUE (email)

14 голосов
/ 18 февраля 2011

Если вы также хотите назвать ограничение, используйте это:

ALTER TABLE myTable
  ADD CONSTRAINT constraintName 
    UNIQUE (columnName);
6 голосов
/ 18 февраля 2011

CREATE UNIQUE INDEX foo ON table_name (field_name)

(перед этим необходимо удалить повторяющиеся значения.)

3 голосов
/ 16 июля 2016

Самый простой и быстрый способ будет с таблицей структуры phpmyadmin.

USE PHPMYADMIN ADMIN PANEL!

Там это на русском языке, но на английском языке версия должна быть такой же. Просто нажмите уникальную кнопку. Также оттуда вы можете сделать ваши столбцы ПЕРВИЧНЫМИ или УДАЛИТЬ.

2 голосов
/ 27 июня 2014
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

правильный ответ

вставная часть

INSERT IGNORE INTO mytable ....
1 голос
/ 01 августа 2016

Этот код решает нашу проблему, чтобы установить уникальный ключ для существующей таблицы

alter ignore table ioni_groups add unique (group_name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...