Sybase ASE создает ограничение внешнего ключа, игнорируя регистр - PullRequest
1 голос
/ 29 декабря 2011

Я пытаюсь получить такую ​​же функциональность из ASE 15.5, которая существует в MSSQL 2008 с точки зрения нечувствительности к регистру.

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

То есть, если tableA имеет значение ABC, tableB должно иметь возможность иметь внешний ключ на tableA и вставить значение aBc.

Мне удалось решить аналогичную проблему с индексацией, выполнив следующее:

create nonclustered index myindex on mytable(**upper**(mycolumn))

И индекс теперь используется для сопоставления без учета регистра, если я это сделаю:

select * from mytable where upper(mycolumn) = upper('My Value')

Но я не могу понять, как сделать внешний ключ без учета регистра.

Любая помощь очень ценится. Спасибо

Ответы [ 2 ]

1 голос
/ 08 октября 2012

Я считаю, что вам нужно написать обновление и триггер вставки для новой таблицы, который выполняет соответствующие проверки столбцов родительской таблицы. Глава 20 руководства по Transact-SQL должна содержать информацию, необходимую для этого.

0 голосов
/ 22 мая 2015

Это должно работать

create nonclustered index myindex on mytable(upper(mycolumn))

, когда вы запустите эту

select * from mytable where upper(mycolumn) = upper('My Value')

в query plan, вы увидите индекс myindex в плане запроса.Работает только на sybase 15

...