Как я могу сделать свои внешние ключи чувствительными к регистру в базе данных с учетом регистра без учета регистра? - PullRequest
2 голосов
/ 02 февраля 2012

У меня есть база данных с сопоставлением по умолчанию для CI (French_CI_AS)

При таком сопоставлении SQL Server будет выполнять проверку моих внешних ключей без учета регистра, что имеет смысл, но вызывает у меня немало проблем, в основном из-за того, что сравнение строк не имеет одинакового поведения на уровне моей базы данных и в моем уровень приложения

У меня есть, вероятно, около двадцати varchar ПК и сотен ФК на этих varchar ПК (да, я знаю, используя только bigint, поскольку ПК, во-первых, избежали бы этой проблемы, но переходя от varchar до bigint здесь не вариант)

Какой самый простой способ разобраться с этим? Я использую SQL Server 2008.

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Вы можете попытаться изменить параметры сортировки столбца на регистр, но тогда вам нужно будет привести столбец (или другие столбцы к тому же порядку сортировки) при его использовании в соединениях или сравнениях.

0 голосов
/ 03 февраля 2012

Вы можете приводить pk и fk к varbinary (длина varchar) всякий раз, когда сравниваете поля.

Что-то вроде:

Where CAST(yourPK As VarBinary(20)) = CAST(yourFK As VarBinary(20))
...