T-SQL:如何创建区分大小写的唯一键?

时间:2009-01-27 21:32:08

标签: sql sql-server tsql constraints

如何在区分大小写的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

2 个答案:

答案 0 :(得分:46)

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

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

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

答案 1 :(得分:4)

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