У меня есть таблица с полем с использованием кодировки 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.
Решения этой проблемы включают проверку уникальности перед вставкой или триггером. Оба варианта гораздо менее элегантны, чем использование уникального индекса.