Как создать уникальное ограничение для столбца (SQL Server 2008 R2)?

У меня есть SQL Server 2008 R2, и я хочу установить уникальный столбец.

существует два способа сделать это:" уникальный индекс "и"уникальное ограничение". Они не сильно отличаются от того, что я понимаю, хотя уникальности рекомендуется, потому что вы также получите автоматически в индекс.

Как создать уникальное ограничение?

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

есть ли способ создать уникальное ограничение через среду SQL Server Management Studio?

4 ответов


чтобы создать эти ограничения через GUI, вам нужен диалог" индексы и ключи", а не ограничения проверки.

но в вашем случае вам просто нужно запустить фрагмент кода, который у вас уже есть. Его вообще не нужно вводить в диалог выражения.


установить столбец как уникальный в SQL Server из GUI:

они действительно заставляют вас бегать по сараю, чтобы сделать это с GUI:

перед началом работы убедитесь, что столбец не нарушает уникальное ограничение.

  1. откройте SQL Server Management Studio.
  2. щелкните правой кнопкой мыши таблицу, нажмите "дизайн".
  3. щелкните правой кнопкой мыши столбец, который вы хотите изменить, появится всплывающее меню, нажмите индексы / ключи.
  4. нажать кнопку "Добавить" Кнопка.
  5. разверните вкладку "Общие".
  6. убедитесь, что столбец, который вы хотите сделать уникальным, выбран в поле "столбцы".
  7. измените поле" Тип "на"уникальный ключ".
  8. Нажмите Кнопку "Закрыть".
  9. вы видите маленькую звездочку в окне файл, это означает, что изменения еще не сохранены.
  10. нажмите Сохранить или нажмите Ctrl+s. Он должен сохранять, и ваша колонка должна быть уникальной.

или установите столбец как уникальный из Окно SQL-запроса:

alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);

изменения вступают в силу немедленно:

Command(s) completed successfully.

вот еще один способ через GUI, который делает именно то, что делает ваш скрипт, даже если он проходит через индексы (а не ограничения) в обозревателе объектов.

  1. щелкните правой кнопкой мыши на " индексы "и нажмите" новый индекс..."(Примечание: это отключено, если таблица открыта в режиме конструктора)

enter image description here

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

enter image description here

  1. выберите столбец " имя " в следующем окне

enter image description here

  1. нажмите OK в обоих окнах

одно не ясно рассказывается, что Microsoft SQL-это создание на фоне уникального индекса по добавленным ограничением

create table Customer ( id int primary key identity (1,1) , name nvarchar(128) ) 

--Commands completed successfully.

sp_help Customer

---> index
--index_name    index_description   index_keys
--PK__Customer__3213E83FCC4A1DFA    clustered, unique, primary key located on PRIMARY   id

---> constraint
--constraint_type   constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
--PRIMARY KEY (clustered)   PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id


---- now adding the unique constraint

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

-- Commands completed successfully.

sp_help Customer

---> index
---index_name   index_description   index_keys
---PK__Customer__3213E83FCC4A1DFA   clustered, unique, primary key located on PRIMARY   id
---U_Name   nonclustered, unique, unique key located on PRIMARY name

---> constraint
---constraint_type  constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
---PRIMARY KEY (clustered)  PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id
---UNIQUE (non-clustered)   U_Name  (n/a)   (n/a)   (n/a)   (n/a)   name

Как вы можете видеть , есть новое ограничение и новый индекс U_Name