如何创建区分大小写的唯一密钥?

问题描述 投票:0回答:2

如何在区分大小写的

varchar
字段上创建唯一约束 (SQL Server 2005)?

目前我的约束如下所示:

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'

我希望将两个不同大小写的值作为不同的值进行处理。我想它会涉及以下代码,但我不知道它如何改变我的

add constraint
语法。

COLLATE SQL_Latin1_General_CP1_CS_AS
sql sql-server t-sql constraints
2个回答
69
投票

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

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

此操作的结果是,此列上的任何选择或联接都将区分大小写。


4
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.