我有一个SQL Server 2008 R2,并且想设置一个唯一列。
似乎有两种方法可以实现这个目标:“唯一索引”和“唯一约束条件”。就我所理解的来说,它们之间没有太大的区别,虽然大多数情况下推荐使用唯一约束条件,因为这样可以自动创建一个索引。
如何创建一个唯一约束条件?
ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
如何在 SQL Server Management Studio 中创建唯一约束?
我有一个SQL Server 2008 R2,并且想设置一个唯一列。
似乎有两种方法可以实现这个目标:“唯一索引”和“唯一约束条件”。就我所理解的来说,它们之间没有太大的区别,虽然大多数情况下推荐使用唯一约束条件,因为这样可以自动创建一个索引。
如何创建一个唯一约束条件?
ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
如何在 SQL Server Management Studio 中创建唯一约束?
使用图形用户界面确实需要一些操作:
在开始之前,请确保您的列不违反唯一约束条件。
alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);
更改立即生效:
Command(s) completed successfully.
要通过GUI创建这些约束,您需要使用“索引和键”对话框,而不是“检查约束”对话框。
但在您的情况下,您只需要运行您已经有的那段代码。根本不需要将其输入表达式对话框。
有一件事情并没有被清楚地说明,那就是微软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