unicode字符上的SQL Server唯一约束问题

时间:2013-10-10 19:35:47

标签: sql sql-server unicode unique-constraint

我的表定义如下:

create table [Language](
Id int primary key identity,
Code varchar(11) not null unique,
NativeName nvarchar(50) not null unique
)

然后,我有一长串插入该表的语句。问题是某些插入语句与我的NativeName列的唯一约束冲突。奇怪的是,内容并不是唯一的。例如,如果我只插入表格为空的以下内容:

insert into Language (Code, NativeName) values('am', N'አማርኛ');
insert into Language (Code, NativeName) values('dv', N'ދިވެހިބަސް‏');

我得到第二次插入。

Violation of UNIQUE KEY constraint 'UQ__Language__EB1957A5F98D1F9C'. Cannot insert duplicate key in object 'dbo.Language'. The duplicate key value is (ދިވެހިބަސް‏).

有谁知道为什么unicode字符会导致这些问题?

1 个答案:

答案 0 :(得分:3)

尝试使用更具体的(二进制)排序规则声明NativeName列。

例如:

 NativeName nvarchar(50) collate SQL_Latin1_General_CP437_BIN not null unique