Создав УНИКАЛЬНЫЙ ограничение, Администраторы SQL Server указывают, что столбец базы данных не может содержать повторяющихся значений. Когда вы создаете новый УНИКАЛЬНЫЙ ограничение, SQL Server проверяет столбец, о котором идет речь, на предмет наличия в нем повторяющихся значений. Если Таблица содержит дубликаты, команда создания ограничения не выполняется. Точно так же после определения ограничения UNIQUE для столбца попытки добавить или изменить данные, которые могут привести к существованию дубликатов, также завершатся ошибкой.

Зачем использовать UNIQUE Constraints
И ограничение UNIQUE, и первичный ключ обеспечивают уникальность, но иногда ограничение UNIQUE является лучшим выбором.
- Используйте ограничение UNIQUE, чтобы указать несколько ограничений для таблицы. К таблице можно привязать только один первичный ключ.
- Используйте ограничение UNIQUE, если столбец допускает значения NULL. Ограничения первичного ключа могут быть прикреплены только к столбцам, которые не допускают нулевые значения.
Создание УНИКАЛЬНОГО ограничения
Самый простой способ создать уникальное ограничение в Transact-SQL - подключиться к компоненту Database Engine в обозревателе объектов в SQL Management Studio и затем щелкнуть Новый запрос.
Используйте следующий запрос, при необходимости изменив термины, чтобы создать новую таблицу и добавить ограничение для столбца:
ИСПОЛЬЗУЙТЕ AdventureWorks2012;
ИДТИ
СОЗДАТЬ ТАБЛИЦУ Производство. TransactionHistoryArchive4
(
TransactionID int NOT NULL,
ОГРАНИЧЕНИЕ AK_TransactionID UNIQUE (TransactionID)
);
ИДТИ.
Выполните запрос.
Точно так же, чтобы создать уникальное ограничение для существующей таблицы, выполните следующий запрос T-SQL:
ИСПОЛЬЗУЙТЕ AdventureWorks2012;
ИДТИ
ИЗМЕНИТЬ ТАБЛИЦУ Человек. Пароль
ДОБАВИТЬ ОГРАНИЧЕНИЕ AK_Password UNIQUE (PasswordHash, PasswordSalt);
ИДТИ.
УНИКАЛЬНЫЕ ограничения vs. УНИКАЛЬНЫЕ индексы
Существует некоторая путаница в отношении разницы между ограничением UNIQUE и индексом UNIQUE. Хотя для их создания вы можете использовать разные команды T-SQL (ALTER TABLE и ADD CONSTRAINT для ограничений и CREATE UNIQUE INDEX для индексов), по большей части они имеют одинаковый эффект. Фактически, когда вы создаете ограничение UNIQUE, оно фактически создает индекс UNIQUE для таблицы. Однако обратите внимание на несколько отличий:
- При создании индекса вы можете добавить дополнительные параметры к команде создания.
- Столбец с ограничением UNIQUE может использоваться как иностранный ключ.