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

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

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

10 ответов

Решение

Команда SQL:

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

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

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

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

В SQL Server Management Studio Express:

  • Щелкните правой кнопкой мыши таблицу, выберите " Изменить" или " Дизайн" (для последующих версий).
  • Щелкните правой кнопкой мыши поле, выберите " Индексы / ключи"...
  • Нажмите кнопку Добавить
  • В поле " Столбцы" выберите имя поля, которое вы хотите сделать уникальным.
  • Для Типа выберите Уникальный ключ.
  • Нажмите Закрыть, Сохранить таблицу.
ALTER TABLE [TableName] ADD CONSTRAINT  [constraintName] UNIQUE ([columns])

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

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

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

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

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

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

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

Click the 'Add' button, and change the columns to the column(s) you wish make unique.

Change Is Unique to Yes.

Click close and save the diagram, and it will add it to the table.

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

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

Документы MSDN

Чтобы создать ограничение 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.

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

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

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
Другие вопросы по тегам