46

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

目前我的约束看起来像这样:

alter table MyTable
add constraint UK_MyTable_MyUniqueKey unique nonclustered (MyCol)

当我尝试插入以下两个值时,我收到“违反 UNIQUE KEY 约束...”错误。

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
4

2 回答 2

64

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

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

由于此操作,此列上的任何选择或连接都将区分大小写。

于 2009-01-27T21:38:38.143 回答
4

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

于 2009-01-27T21:45:03.497 回答