我有一个CI默认排序规则(French_CI_AS
)如何使用不区分大小写排序的数据库对外键区分大小写?
在此归类,SQL Server将做我的外键不区分大小写的检查,这是有道理的数据库,而是害我不少问题,主要是因为字符串比较不会有我的数据库层,在我的应用程序层
相同的行为我可能已经得到约二十varchar
的PK和数百FKS的那些varchar
的PK(没错,我知道只用bigint
为的PK本来可以避免这个问题,但是从varchar
到bigint
不是这里的选项)
解决此问题的最简单方法是什么?我正在使用SQL Server 2008.
你不能。如果数据库归类不区分大小写,那么所有比较(由FK-> PK链接使用)都不区分大小写......没有“魔术”来改变....和**是** - 使用'varchar '因为PK是一个非常糟糕的主意** - 这只是你不应该使用'varchar'作为PK的众多原因之一..... – 2012-02-02 17:47:19
列定义中的COLLATE不会有帮助吗? 'CREATE TABLE ... column_name COLLATE collation_name'? –
2012-02-02 17:56:47
@marc_s:当然可以。例如,我可以将整个detabase的排序规则更改为区分大小写。我只是试图尽可能无痛地找到实现我最初的目标的方法...... – Brann 2012-02-02 18:56:27