如何在列上创建唯一约束(SQLServer2008R2) ?

我有 SQLServer2008R2,我想设置一个唯一的列。

似乎有两种方法可以做到这一点: “唯一索引”和“唯一约束”。虽然大多数人都建议使用唯一约束,但它们与我理解的没有太大区别,因为您还可以自动获得索引。

如何创建独特的约束?

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

是否有办法通过 SQLServerManagementStudio 创建唯一约束?

249184 次浏览

要通过 GUI 创建这些约束,您需要的是“索引和键”对话框,而不是检查约束对话框。

但是在您的情况下,您只需要运行已有的代码片段。它根本不需要进入表达式对话。

从 GUI 中将 SQLServer 中的列设置为惟一:

他们真的让你在谷仓里跑来跑去,用图形用户界面做到这一点:

在开始之前,请确保您的列不会违反唯一约束。

  1. 打开 SQLServerManagementStudio。
  2. 右键单击您的表,单击“设计”。
  3. 右键单击要编辑的列,弹出菜单出现,单击“索引/键”。
  4. 点击“添加”按钮。
  5. 展开“ General”选项卡。
  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

有一点没有明确说明,那就是 microsoftsql 正在后台为添加的约束创建唯一的索引

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

如您所见,有一个新的约束和一个新的索引 名字

当处于表的 设计视图中时,单击所需的列并展开顶部工具栏上的 表格设计师选项卡。选择 索引/键选项。~

Table Designer tool tab

然后添加一个新的约束,选择正确的列,将其类型设置为 唯一钥匙,并以某种方式命名它。仅此而已!^^ Creating unique constraint