Как заставить столбец быть уникальным для всей таблицы в SQL Server 2008 R2? - PullRequest
17 голосов
/ 20 декабря 2010

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

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

Ответы [ 3 ]

23 голосов
/ 20 декабря 2010

Не существует такого понятия, как «вторичный первичный ключ». В таблице один первичный ключ.

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

ALTER TABLE dbo.yourTable
   ADD CONSTRAINT UQ_yourTable_Description UNIQUE ([Description]);
15 голосов
/ 20 декабря 2010

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

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

alt text

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

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
1 голос
/ 29 марта 2016

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

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

  1. Щелкните правой кнопкой мыши «Индексы» под вашей таблицей в обозревателе решений SSMS и выберите «Новый индекс ...» (я знаю, что вы хотите создать ограничение, а не индекс, но это именно то, что ADD CONSTRAINT SQL-скрипт делает.

enter image description here

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

enter image description here

Проверьте вашу колонку в следующем окне

enter image description here

Нажмите OK в обоих окнах
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...