如何在列(SQL Server 2008 R2)上创建唯一约束?

Whi*_*and 96 sql sql-server unique-constraint sql-server-2008

我有SQL Server 2008 R2,我想设置一个唯一的列.

似乎有两种方法可以做到这一点:"唯一索引"和"唯一约束".尽管大多数人都推荐使用唯一约束,但它们与我的理解并没有太大差别,因为您也会自动获得索引.

如何创建唯一约束?

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
Run Code Online (Sandbox Code Playgroud)

有没有办法通过SQL Server Management Studio创建唯一约束?

Eri*_*ski 113

从GUI中将列设置为SQL Server中的唯一列:

他们真的让你在谷仓里跑来跑去用GUI:

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

  1. 打开SQL Server Management Studio.
  2. 右键单击表,单击"设计".
  3. 右键单击要编辑的列,将出现一个弹出菜单,单击"索引/键".
  4. 单击"添加"按钮.
  5. 展开"常规"选项卡.
  6. 确保在"列"框中选择要唯一的列.
  7. 将"类型"框更改为"唯一键".
  8. 单击"关闭".
  9. 您在文件窗口中看到一个小星号,这意味着尚未保存更改.
  10. 按保存或按Ctrl + s.它应该保存,您的列应该是唯一的.

或者从SQL Query窗口中将列设置为唯一:

alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);
Run Code Online (Sandbox Code Playgroud)

更改立即生效:

Command(s) completed successfully.
Run Code Online (Sandbox Code Playgroud)

  • 你让我感觉自己老了,孩子。Pinky 是一个变量名,请参阅:https://www.youtube.com/watch?v=qzZmU0aGmcc 抓住这一天,有一天你也会变老。 (3认同)

Mar*_*ith 53

要通过GUI创建这些约束,您需要"索引和键"对话而不是检查约束.

但在你的情况下,你只需要运行你已经拥有的代码.根本不需要输入表达式对话框.


Ton*_* L. 15

这是通过GUI的另一种方式,即使它通过对象资源管理器中的索引(不是约束),它也能完成您的脚本所做的工作.

  1. 右键单击"索引"并单击"新索引..."(注意:如果在设计视图中打开表,则禁用此选项)

在此输入图像描述

  1. 为新索引指定名称("U_Name"),选中"唯一",然后单击"添加..."

在此输入图像描述

  1. 在下一个窗口中选择"名称"列

在此输入图像描述

  1. 在两个窗口中单击确定

  • 在 SSMS 2014 中,用于创建新索引的右键单击上下文菜单选项与上面的屏幕截图略有不同。单击“新建索引”时,必须从列表中进行选择(聚集索引、非聚集索引、主 XML 索引、辅助 XML 索引、空间索引、非聚集列存储索引和聚集列存储索引)。通常,您会选择非聚集索引。 (2认同)

小智 8

一件未明确介绍的事情是,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
Run Code Online (Sandbox Code Playgroud)

如您所见,这里有一个新的约束和一个新的索引U_Name