MySQL - сделать существующее поле уникальным

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

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

7 ответов


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 больше не поддерживается.

ссылка


просто напишите этот запрос в БД через phpmyadmin.

ALTER TABLE TableName ADD UNIQUE (FieldName)

пример.

ALTER TABLE user ADD UNIQUE (email)

спасибо


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

ALTER TABLE myTable
  ADD CONSTRAINT constraintName 
    UNIQUE (columnName);

CREATE UNIQUE INDEX foo ON table_name (field_name)

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


ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

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

вставить часть

INSERT IGNORE INTO mytable ....

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

USE PHPMYADMIN ADMIN PANEL!

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


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

alter ignore table ioni_groups add unique (group_name);