Уникальность с учетом регистра и поиск без учета регистра

У меня есть таблица с полем с использованием кодировки 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);

Проблема: Кроме того, я должен убедиться, что все сохраненные значения поля a уникальны, но с учетом регистра . Пример на немецком языке: «blühen» и «Blühen» должны оба храниться в таблице. Но повторное добавление «Blühen» не должно быть возможным.

Есть ли в MySQL встроенная функция, чтобы иметь и то и другое?

К сожалению, кажется, что невозможно установить сопоставление для индекса в MySQL 5.1.

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

9
задан Lightness Races with Monica 2 January 2012 в 04:18
поделиться