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

Sei*_*bar 37 sql t-sql sql-server constraints

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

目前我的约束如下:

alter table MyTable
add constraint UK_MyTable_MyUniqueKey unique nonclustered (MyCol)
Run Code Online (Sandbox Code Playgroud)

当我尝试插入以下两个值时,出现"违反UNIQUE KEY约束..."错误.

insert into MyTable (MyCol) values ('ABC')
insert into MyTable (MyCol) values ('abc') --causes a violation of UNIQUE KEY constraint 'UK_MyTable_MyUnqiueKey'
Run Code Online (Sandbox Code Playgroud)

我希望将两个不同用途的值作为unqiue处理.我想它将涉及以下代码,但我不知道它如何改变我的add constraint语法.

COLLATE SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud)

Jas*_*yon 50

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

ALTER TABLE mytable 
ALTER COLUMN mycolumn VARCHAR(10) 
COLLATE SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud)

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

  • 本专栏涉及的所有内容都区分大小写. (8认同)
  • 您必须删除约束,运行ALTER,再次添加PK以处理依赖关系 (5认同)
  • 如果列不仅包含Latin1字符,还包含以UTF-8编码的其他字母表(当前大多数应用程序中都是标准的),我该怎么做呢? (5认同)