Как создать уникальное ограничение для моего столбца (SQL Server 2008 R2)?
У меня есть SQL Server 2008 R2, и я хочу установить уникальный столбец.
Кажется, есть два способа сделать это: "уникальный индекс" и "уникальное ограничение". Они не сильно отличаются от того, что я понимаю, хотя большинство ограничений рекомендуется для большинства, потому что вы также получаете индекс автоматически.
Как создать уникальное ограничение?
ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
Есть ли способ создать уникальное ограничение через SQL Server Management Studio?
Ответы
Ответ 1
Чтобы создать эти ограничения через графический интерфейс, вам нужен диалог "индексы и ключи", а не контрольные ограничения.
Но в вашем случае вам просто нужно запустить кусок кода, который у вас уже есть. Его вообще не нужно вводить в диалог выражения.
Ответ 2
Установить столбец как уникальный в SQL Server из графического интерфейса пользователя:
Они действительно заставляют вас бегать по сараю, чтобы сделать это с помощью графического интерфейса:
Перед началом работы убедитесь, что столбец не нарушает уникальное ограничение.
- Откройте SQL Server Management Studio.
- Щелкните правой кнопкой мыши свою таблицу, нажмите "Дизайн".
- Щелкните правой кнопкой мыши на столбце, который вы хотите изменить, появится всплывающее меню, нажмите "Индексы/клавиши".
- Нажмите кнопку "Добавить".
- Разверните вкладку "Общие".
- Убедитесь, что у вас есть столбец, который вы хотите сделать уникальным, выбранным в поле "столбцы".
- Измените поле "Тип" на "Уникальный ключ".
- Нажмите "Закрыть".
- Вы видите небольшую звездочку в окне файла, это означает, что изменения еще не сохранены.
- Нажмите "Сохранить" или нажмите Ctrl + s. Он должен сохранять, и ваша колонка должна быть уникальной.
Или установите столбец как уникальный из окна SQL Query:
alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);
Изменения вступают в силу немедленно:
Command(s) completed successfully.
Ответ 3
Вы уверены, что столбец в настоящее время уникален? Вы можете это выяснить:
select name,count(*)
from customer
group by name
having count(*) > 1
Это даст вам любые дубликаты.
Ответ 4
Здесь другой путь через графический интерфейс, который делает именно то, что делает ваш script, даже если он проходит через Indexes (not Constraints) в проводнике объектов.
- Щелкните правой кнопкой мыши на "Индексы" и нажмите "Новый индекс..." (обратите внимание: это
отключено, если таблица открыта в режиме просмотра)
![введите описание изображения здесь]()
- Дайте новый индекс имени ( "U_Name" ), отметьте "Уникальный",
и нажмите "Добавить..."
![введите описание изображения здесь]()
- Выберите столбец "Имя" в следующем окне
![введите описание изображения здесь]()
- Нажмите ОК в обоих окнах