Создание ограничений уникальности

Область применения: 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

  1. В обозревателе объектовщелкните правой кнопкой мыши таблицу, в которую необходимо добавить ограничение уникальности, и выберите Конструктор.

  2. В меню Конструктор таблиц выберите пункт Индексы и ключи.

  3. В диалоговом окне Индексы и ключи нажмите Добавить.

  4. В сетке в разделе "Общие" выберите "Тип " и выберите "Уникальный ключ " в раскрывающемся списке справа от свойства и нажмите кнопку "Закрыть".

  5. В меню Файл выберите пункт Сохранить имя таблицы.

Использование Transact-SQL

Создание уникального ограничения с помощью Transact-SQL

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На панели "Стандартный" выберите "Создать запрос".

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере создаются таблица TransactionHistoryArchive4 и ограничение уникальности в столбце TransactionID.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive4  
     (  
       TransactionID int NOT NULL,   
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)   
    );   
    GO  
    

Создание уникального ограничения для существующей таблицы

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На панели "Стандартный" выберите "Создать запрос".

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере создается ограничение уникальности в столбцах PasswordHash и PasswordSalt в таблице Person.Password.

    USE AdventureWorks2022;   
    GO  
    ALTER TABLE Person.Password   
    ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);   
    GO  
    
    

Создание уникального ограничения для новой таблицы

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На панели "Стандартный" выберите "Создать запрос".

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере создается таблица и определяется ограничение уникальности в столбце TransactionID.

    USE AdventureWorks2022;  
    GO  
    CREATE TABLE Production.TransactionHistoryArchive2  
    (  
       TransactionID int NOT NULL,  
       CONSTRAINT AK_TransactionID UNIQUE(TransactionID)  
    );  
    GO  
    

Создание уникального ограничения для столбца, допускаемого значение NULL

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД.

  2. На панели "Стандартный" выберите "Создать запрос".

  3. Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В примере создается отфильтрованное уникальное ограничение с помощью синтаксисаCREATE UNIQUE INDEX, применяющее только уникальность для значений, отличныхNULL от значений.

    USE AdventureWorks2022;  
    GO
    CREATE UNIQUE INDEX UQ_AdventureWorksDWBuildVersion
    ON dbo.AdventureWorksDWBuildVersion (DBVersion)
    WHERE (DBVersion IS NOT NULL);
    GO