Unique Constraints SQL Server
В SQL Server (Transact-SQL) Unique Constraints как создавать, удалять, отключать, и включать unique constraints (уникальные ограничения)
Уникальное ограничение — это одно поле или комбинация полей, которые однозначно определяют запись. Некоторые из полей могут содержать нулевые значения, если комбинация значений уникальна.
В чем разница между уникальным ограничением и первичным ключом?
Первичный ключ — поля, которые являются частью первичного ключа, не могут содержать значение NULL.
Уникальное ограничение — некоторые поля, которые являются частью уникального ограничения, могут содержать значения NULL, если комбинация значений уникальна.
Создание уникального ограничения — использование оператора CREATE TABLE
Синтаксис создания уникального ограничения с использованием оператора CREATE TABLE в SQL
CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
.
CONSTRAINT constraint_name UNIQUE (uc_col1, uc_col2, . uc_col_n)
);
table_name — имя таблицы, которую вы хотите создать.
column1 , column2 — столбцы, которые вы хотите создать в таблице.
constraint_name — имя уникального ограничения.
uc_col1 , uc_col2 , . uc_col_n — столбцы, которые составляют уникальное ограничение.
Пример
Рассмотрим пример создания уникального ограничения в SQL Server с помощью опертора CREATE TABLE.
Создание ограничений уникальности
Вы можете создать уникальное ограничение в 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
Следующие шаги
- Инструкция ALTER TABLE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- table_constraint (Transact-SQL)
SQL — Ограничение UNIQUE
Ограничение UNIQUE гарантирует, что все значения в столбце отличаются. Ограничения UNIQUE и PRIMARY KEY гарантируют уникальность столбца или набора столбцов. Ограничение PRIMARY KEY автоматически имеет ограничение UNIQUE.
Однако для каждой таблицы может быть множество ограничений UNIQUE, но только одно ограничение PRIMARY KEY для каждой таблицы.
CREATE TABLE users ( user_id int NOT NULL, name varchar(255) NOT NULL, fullname varchar(255), gender int, UNIQUE (user_id) );
SQL UNIQUE ограничение в ALTER TABLE
Чтобы создать ограничение UNIQUE в столбце «user_id», когда таблица уже создана, используйте следующее:
ALTER TABLE users ADD UNIQUE (user_id);
Чтобы назвать ограничение UNIQUE и определить ограничение UNIQUE для нескольких столбцов, используйте следующий синтаксис:
ALTER TABLE users ADD CONSTRAINT UC_Users UNIQUE (user_id, name);
DROP a UNIQUE
Чтобы удалить ограничение UNIQUE, используйте следующий SQL:
ALTER TABLE users DROP INDEX UC_Users;
Как сделать столбец уникальным sql
Для того чтобы гарантировать уникальность значений одного поля используют ключевое слово UNIQUE . Обычно это делается при создании таблицы.
CREATE TABLE products ( id bigint PRIMARY KEY, name text UNIQUE, price numeric );
Если же таблица уже создана, то добавить ограничение уникальности можно с помощью ALTER TABLE . ADD . Это делается следующим образом:
ALTER TABLE users ADD UNIQUE (email)
