Создание ограничений уникальности
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure
Вы можете создать уникальное ограничение в SQL Server с помощью SQL Server Management Studio или Transact-SQL, чтобы не вводить повторяющиеся значения в определенных столбцах, которые не участвуют в первичном ключе. Создание ограничения уникальности автоматически приводит к созданию соответствующего уникального индекса.
Примечание.
Сведения об уникальных ограничениях в Azure Synapse Analytics см. в статье "Первичный ключ", "Внешний ключ" и уникальный ключ в Azure Synapse Analytics.
Разрешения
Требуется разрешение ALTER на таблицу.
Использование SQL Server Management Studio (SSMS)
Создание уникального ограничения с помощью SSMS
В обозревателе объектовщелкните правой кнопкой мыши таблицу, в которую необходимо добавить ограничение уникальности, и выберите Конструктор.
В меню Конструктор таблиц выберите пункт Индексы и ключи.
В диалоговом окне Индексы и ключи нажмите Добавить.
В сетке в разделе "Общие" выберите "Тип " и выберите "Уникальный ключ " в раскрывающемся списке справа от свойства и нажмите кнопку "Закрыть".
В меню Файл выберите пункт Сохранить имя таблицы.
Использование Transact-SQL
Создание уникального ограничения с помощью Transact-SQL
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На панели "Стандартный" выберите "Создать запрос".
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере создаются таблица
TransactionHistoryArchive4
и ограничение уникальности в столбцеTransactionID
.USE AdventureWorks2022; GO CREATE TABLE Production.TransactionHistoryArchive4 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO
Создание уникального ограничения для существующей таблицы
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На панели "Стандартный" выберите "Создать запрос".
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере создается ограничение уникальности в столбцах
PasswordHash
иPasswordSalt
в таблицеPerson.Password
.USE AdventureWorks2022; GO ALTER TABLE Person.Password ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt); GO
Создание уникального ограничения для новой таблицы
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На панели "Стандартный" выберите "Создать запрос".
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере создается таблица и определяется ограничение уникальности в столбце
TransactionID
.USE AdventureWorks2022; GO CREATE TABLE Production.TransactionHistoryArchive2 ( TransactionID int NOT NULL, CONSTRAINT AK_TransactionID UNIQUE(TransactionID) ); GO
Создание уникального ограничения для столбца, допускаемого значение NULL
В обозревателе объектов подключитесь к экземпляру ядра СУБД.
На панели "Стандартный" выберите "Создать запрос".
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В примере создается отфильтрованное уникальное ограничение с помощью синтаксиса
CREATE UNIQUE INDEX
, применяющее только уникальность для значений, отличныхNULL
от значений.USE AdventureWorks2022; GO CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion ON dbo.AdventureWorksDWBuildVersion (DBVersion) WHERE (DBVersion IS NOT NULL); GO