我必须在我的SQL Server数据库表中存储Varchar类型的ID。ID是唯一的,它们将用于更新/删除操作。
所以我决定把它们做成PK。问题是,PK“A”和“a”中只允许有一个,而这两个都可能在我必须导入的数据集中。
INSERT INTO test(test) VALUES('A')
INSERT INTO test(test) VALUES('a')
Violation of the PRIMARY KEY constraint 'PK_test'. Cannot insert duplicate key in object 'dbo.test'.
我是否可以使PK区分大小写-以便在插入“A”后,可以插入“a”,但不可以插入“A”?
2条答案
按热度按时间3bygqnnd1#
一种选择是将数据库的排序规则更改为区分大小写的排序规则,如
SQL_Latin1_General_CP1_CS_AS
。您可以在SQL Server Management Studio中通过对象资源管理器执行此操作,方法是右键单击数据库,然后转到“属性”〉“选项”,然后选择“排序规则”下拉列表。名称中包含“CS”的任何排序规则都区分大小写。
当然,正如评论中所指出的,这可能是矫枉过正,您也可以只覆盖一列的排序规则,如下所述:
https://msdn.microsoft.com/en-us/library/ms190920.aspx
e7arh2l62#
不必使整个数据库都区分大小写,只需使主键列区分大小写即可:
或作为表变量: