我有一個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