Уникальные записи (индекс UNIQUE)

В MySQL можно создавать поля с уникальными значениями (т.е. одно и тоже значение не будет повторяться в разных записях). Для этого используется индекс UNIQUE.

Код ниже делает в таблице «users» уникальным поле «email».

ALTER TABLE users ADD UNIQUE(email)

Также уникальный индекс можно создать через PHPMyAdmin, как показано на картинке ниже:

PHPMyADmin Unique

Перед тем, как создавать уникальный индекс, сначала надо проверить, что для данного поля нет индекса UNIQE (иначе будет повторно создан уникальный индекс). Это можно проверить через команду SHOW INDEXES.

SHOW INDEXES FROM users WHERE Column_name='email' AND NOT Non_unique

При попытке указать уже существующее значение, MySQL вернёт ошибку «#1062 - Дублирующаяся запись по ключу 'email'».

Уникальный индекс из нескольких полей

В уникальный индекс можно добавить несколько полей, например user_id и property_id.

ALTER TABLE users_properties ADD UNIQUE(user_id, property_id)

Для поля «property_id» задан уникальный индекс, но там всё равно могут быть одинаковые значения, но при условии, если в каждой записи будет разный «user_id». Если значения двух полей будут совпадать с уже существующим, то MySQL вернёт ошибку «Дублирующаяся запись».