Как создать уникальное ограничение в SSMS 2012 [дубликат]

этот вопрос уже есть ответ здесь:

Я совершенно новичок в SQL Server, я использую версию 2012.

у меня есть таблица со следующей структурой:

Attendance
--------------
TagID     (FK)
SessionID (FK)       
ScanningTime

мне нужно создать уникальное ограничение на основе двух столбцов (TagID и SessionID)

Я не уверен, как это сделать. Я создал запрос и попробовал этот код:

ALTER TABLE Attendance ADD CONSTRAINT UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)

но когда я пытаюсь выполнить его, я получаю эту ошибку:

Msg 156, Уровень 15, Состояние 1, Строка 2
Неверный синтаксис рядом с ключевым словом 'UNIQUE'.

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

2 ответов


Вы были почти там. Если вы используете constraint ключевое слово вам нужно указать имя.

ALTER TABLE Attendance ADD CONSTRAINT UQ_TagID_SessionID UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)

или

ALTER TABLE Attendance ADD UNIQUE NONCLUSTERED
(
    TagID,
    SessionID
)

также работает, но тогда ограничение автоматически называется


Если вы предпочитаете делать это через GUI, а не через ALTER операторы, вы также можете щелкнуть правой кнопкой мыши по таблице в Обозревателе объектов, выберите "дизайн", затем щелкните правой кнопкой мыши где-нибудь на пустом фоне и выберите"индексы/ключи". Откроется диалоговое окно, в котором вы выберете "уникальный ключ" в качестве типа.

внесение изменений через GUI-это быстрый способ действий, которые вы, как правило, делаете редко и, следовательно, не уверены в синтаксисе.

многие диалоговые окна Management Studio - но не этот, вероятно, так же, как это под диалог диалогового окна конструктора таблиц - есть кнопка "скрипт" в левом верхнем углу, которая записывает действие, которое вы настраиваете через GUI в окно запроса, чтобы вы могли сохранить их для будущих задач similr или acopy и вставить их, если вам нужны подобные действия.