У меня есть таблица с полем с использованием кодировки utf8 и сортировки utf8_unicode_ci:Чувствительный уникальность и поиск без учета регистра
CREATE TABLE dictionary (
a varchar(128) NOT NULL
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Сопоставление utf8_unicode_ci требуется для эффективного без учета регистра поиска с расширениями и перевязку. Для этого у меня есть индекс:
CREATE INDEX a_idx on dictionary(a);
Проблема: Кроме того, я должен убедиться, что все сохраненные значения поля а являются уникальными, но в случае чувствительной способом. Пример Германии: «blühen» и «Blühen» должны храниться в таблице. Но добавление «Blühen» во второй раз не должно быть возможным.
Есть ли встроенные функции в MySQL, чтобы иметь оба?
К сожалению, не представляется возможным установить сопоставление индекса в MySQL 5.1.
Решения этой проблемы включают проверку уникальности перед вставкой или триггером. Оба они намного менее изящны, чем использование уникального индекса.
К сожалению, MySQL не имеет таких функций, как индексы/материализованные представления или вычисляемые столбцы или индексы на основе функций, которые имеются в других СУБД. Мне было бы интересно посмотреть, как это делается, конечно ... – gbn
Будет ли добавлен еще один столбец с учетом сортировки и неудобства для случая? –
Я думаю, что эта тема - хорошая помощь. http://stackoverflow.com/questions/4945349/mysql-search-with-uft8-general-ci-is-case-sensitive-for-fulltext – MahanGM