Как заставить столбец быть уникальным для всей таблицы в SQL Server 2008 R2?

У меня есть таблица с полем Description. Я хочу убедиться, что никакие две строки не имеют одно и то же "Описание", но я не могу сделать описание в моем столбце идентификации (мой столбец ID - это int).

Безопасно ли установить Description в качестве второго первичного ключа (в дополнение к моему идентификатору, который уже является первичным ключом)?

Ответы

Ответ 1

Добавьте уникальный индекс в столбец Описание.

С помощью Sql Server Management Studio щелкните правой кнопкой мыши по таблице и выберите "Дизайн". Затем щелкните правой кнопкой мыши по столбцу и выберите "Индексы/ключи". Вам будет предложено следующее окно

alt text

Нажмите "Добавить" в левом нижнем углу, а затем укажите свойства для вашего индекса. Если вы хотите использовать DDL script, то используйте что-то вроде этого

CREATE UNIQUE NONCLUSTERED INDEX [IX_INDEXNAME] ON [dbo].[TABLENAME] 
(
    [Description] ASC
)
WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
GO

Ответ 2

Нет такой вещи, как "вторичный первичный ключ". В таблице есть один первичный ключ.

Создайте УНИКАЛЬНОЕ ограничение в столбце Description (очень необычная вещь, BTW). Например, уникальный индекс на Product Name, а не Product description), или если у вас есть нулевые значения в столбце Description, создайте Filtered index ( SQL Server 2008 и далее)

ALTER TABLE dbo.yourTable
   ADD CONSTRAINT UQ_yourTable_Description UNIQUE ([Description]);

Ответ 3

Есть другой способ сделать это с помощью GUI SSMS, если вы предпочитаете:

Я заменил столбец Description именем MyUniqueColumn для примера.

  • Щелкните правой кнопкой мыши "Индексы" под вашей таблицей в обозревателе решений SSMS и нажмите "Новый индекс..." (я знаю, что вы хотите создать contstraint, а не индекс, но это именно то, что ADD CONSTRAINT SQL script делает.

введите описание изображения здесь

  1. Дайте новый индекс имени (например, "UQ_MyUniqueColumn" ), отметьте "Уникальный" и нажмите "Добавить..."

введите описание изображения здесь

  1. Проверьте свой столбец в следующем окне

введите описание изображения здесь

  1. Нажмите ОК в обоих окнах