我的表定义如下:
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字符导致这些问题?
最佳答案
尝试使用更特定的(二进制)排序规则声明NativeName列。
例如:
NativeName nvarchar(50) collate SQL_Latin1_General_CP437_BIN not null unique
关于Unicode字符上的SQL Server唯一约束问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19304707/