2009-01-27 23 views
32

如何在区分大小写的varchar字段(SQL Server 2005)上创建唯一性约束?T-SQL:如何创建区分大小写的唯一键?

目前我的约束是这样的:

alter table MyTable 
add constraint UK_MyTable_MyUniqueKey unique nonclustered (MyCol) 

当我尝试插入以下两个值,我得到一个“唯一键约束违反......”的错误。

insert into MyTable (MyCol) values ('ABC') 
insert into MyTable (MyCol) values ('abc') --causes a violation of UNIQUE KEY constraint 'UK_MyTable_MyUnqiueKey' 

我想将两个不同的值作为unqiue来处理。我想它会涉及以下代码,但我不知道它如何更改我的add constraint语法。

COLLATE SQL_Latin1_General_CP1_CS_AS 
+0

你的意思是“敏感”或不敏感?如果美国广播公司和美国广播公司都解决相同,那么这是一个'in'敏感的比较。您可能会重申问题 – keithwarren7 2009-01-27 21:38:09

+0

是的 - 您是正确的。谢谢 – Seibar 2009-01-27 21:39:00

回答

40

这会将列更改为区分大小写。我不认为有任何改变你的约束......

ALTER TABLE mytable 
ALTER COLUMN mycolumn VARCHAR(10) 
COLLATE SQL_Latin1_General_CP1_CS_AS 

任何选择或加入此列会变得情况下,这种操作的结果是敏感的。

4

只能设置数据库中数据的区分大小写(列的最小粒度)。您无法设置索引的区分大小写 - 这相当于能够在表达式上进行索引,在某些数据库中可能会这样,但在Sql Server中可能不会。

相关问题