Как заставить столбец быть уникальным для всей таблицы в 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 делает.
![введите описание изображения здесь]()
- Дайте новый индекс имени (например, "UQ_MyUniqueColumn" ), отметьте "Уникальный" и нажмите "Добавить..."
![введите описание изображения здесь]()
- Проверьте свой столбец в следующем окне
![введите описание изображения здесь]()
- Нажмите ОК в обоих окнах