SQL Server 2005 Как создать уникальное ограничение?

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

Я ищу как TSQL, так и то, как это сделать в диаграмме базы данных.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
181
0
182 775
10
Перейти к ответу Данный вопрос помечен как решенный

Ответы 10

ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

Вы ищете что-то вроде следующего

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

Документы MSDN

На диаграмме студии управления выберите таблицу, щелкните правой кнопкой мыши, чтобы добавить новый столбец, если хотите, щелкните правой кнопкой мыши столбец и выберите «Проверить ограничения», там вы можете добавить его.

Я также обнаружил, что это можно сделать с помощью диаграмм базы данных.

Щелкнув правой кнопкой мыши по таблице и выбрав Индексы / Ключи ...

Нажмите кнопку «Добавить» и измените столбцы на столбцы, которые вы хотите сделать уникальными.

Изменения уникальны для «Да».

Щелкните закрыть и сохраните диаграмму, и она добавит ее в таблицу.

ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])
Ответ принят как подходящий

Команда SQL:

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

См. Полный синтаксис здесь.

Если вы хотите сделать это из диаграммы базы данных:

  • щелкните правой кнопкой мыши таблицу и выберите «Индексы / ключи».
  • нажмите кнопку Добавить, чтобы добавить новый индекс
  • введите необходимую информацию в свойствах справа:
    • нужные столбцы (нажмите кнопку с многоточием, чтобы выбрать)
    • установить Уникально на Да
    • дайте ему подходящее имя

Это работает ... но ... почему ограничение отображается в папке INDEX вместо папки CONSTRAINTS. Он отображается с другим значком, но в любом случае он должен находиться в папке ограничений.

Fernando Torres 19.02.2016 16:36

Предупреждение. В столбце, который вы указали как уникальный, может быть только одна пустая строка.

Вы можете сделать это с помощью отфильтрованного индекса в SQL 2008:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

Смотрите Значение поля должно быть уникальным, если оно не равно NULL. для ряда ответов.

как вы это делаете в sql server 2005?

Maxrunner 26.05.2015 22:14

Это недостижимо в sql server 2005. Я настоятельно рекомендую перейти на более современную СУБД - с 12 апреля 2016 года это будет официально не поддерживается.

reedstonefood 24.06.2015 16:26

В SQL Server Management Studio Express:

  • Щелкните таблицу правой кнопкой мыши и выберите Изменить или Дизайн (для более поздних версий).
  • Щелкните поле правой кнопкой мыши, выберите Индексы / ключи ...
  • Нажмите Добавлять
  • Для Столбцы выберите название поля, который должен быть уникальным.
  • Для Тип выберите Уникальный ключ.
  • Щелкните таблицу Закрывать, Сохранять.

Чтобы создать ограничение UNIQUE для одного или нескольких столбцов, когда таблица уже создана, используйте следующий SQL:

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Чтобы разрешить именование УНИКАЛЬНОГО ограничения для вышеуказанного запроса

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

Запрос поддерживается MySQL / SQL Server / Oracle / MS Access.

UNIQUE NONCLUSTERED и опцииPAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON?

Kiquenet 22.11.2016 11:51

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

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO

Другие вопросы по теме