SQL Server 2005 Як створити унікальне обмеження?


181

Як створити унікальне обмеження для існуючої таблиці в SQL Server 2005?

Я шукаю і TSQL, і як це зробити в діаграмі баз даних.

Відповіді:


272

Команда SQL:

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

Повний синтаксис дивіться тут .

Якщо ви хочете зробити це з діаграми бази даних:

  • клацніть правою кнопкою миші на таблиці та виберіть "Індекси / ключі"
  • натисніть кнопку Додати, щоб додати новий індекс
  • введіть необхідну інформацію у Властивості праворуч:
    • потрібні стовпці (натисніть кнопку еліпсиса, щоб вибрати)
    • встановити Є унікальним для Так
    • дайте йому відповідну назву

1
Він працює ... але ... чому обмеження відображається в папці INDEX замість папки CONSTRAINTS. Він відображається з іншим значком, але в будь-якому випадку він повинен бути в папці з обмеженнями.
Фернандо Торрес

84

У SQL Server Management Studio Express:

  • Клацніть правою кнопкою миші та виберіть Змінити або Дизайн (для пізніших версій)
  • Клацніть правою кнопкою миші поле, виберіть Індекси / Ключі ...
  • Натисніть кнопку Додати
  • Для стовпців виберіть ім'я поля, яке ви хочете бути унікальним.
  • Для типу виберіть унікальний ключ .
  • Клацніть Закрити , збережіть таблицю.


15

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

Це можна зробити з відфільтрованим індексом у SQL 2008:

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

Див. Значення поля повинно бути унікальним, якщо воно не є NULL для ряду відповідей.


як це зробити на сервері sql 2005?
Maxrunner

2
Це не досяжно на сервері sql 2005. Я настійно рекомендую перейти на більш сучасну RDBMS - вона буде офіційно непідтримувана 12 квітня 2016 р.
reedstonefood


10

Я також виявив, що ви можете це зробити за допомогою діаграм баз даних.

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

Натисніть кнопку "Додати" та змініть стовпці до стовпців, які ви хочете зробити унікальними.

Зміна унікальна для Так.

Клацніть закрити і збережіть діаграму, і вона додасть її до таблиці.



6

Щоб створити UNIQUE обмеження на одному або декількох стовпцях, коли таблиця вже створена, використовуйте наступний SQL:

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

Щоб дозволити називати обмеження UNIQUE для вищезазначеного запиту

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 ?
Кікенет

5

У діаграмі студії управління виберіть таблицю, клацніть правою кнопкою миші, щоб за бажанням додати новий стовпець, клацніть правою кнопкою миші на стовпчику та виберіть "Перевірити обмеження", там ви можете додати її.


0

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

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.