Tengo una tabla con un campo de un uso de la codificación UTF-8 y el cotejo utf8_unicode_ci:Caso singularidad sensible y búsqueda que ignore
CREATE TABLE dictionary (
a varchar(128) NOT NULL
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Se requiere que el utf8_unicode_ci cotejo para una eficiente sensible a mayúsculas búsqueda con extensiones y ligaduras. Para este fin tengo el índice:
CREATE INDEX a_idx on dictionary(a);
Problema: i Además debe asegurarse de que todos los valores almacenados del campo a son únicas, pero en un mayúsculas y minúsculas manera. Ejemplo en alemán: "blühen" y "Blühen" deben almacenarse en la tabla. Pero agregar "Blühen" por segunda vez no debería ser posible.
¿Existe una funcionalidad incorporada en MySQL para tener ambas?
Desafortunadamente, parece que no es posible establecer la intercalación para el índice en MySQL 5.1.
Las soluciones a este problema incluyen una comprobación de exclusividad antes de insertar o un desencadenador. Ambos son mucho menos elegantes que usar un índice único.
Desafortunadamente, MySQL carece de características como índices/vistas materializadas o columnas calculadas o índices basados en funciones que otros RDBMS tienen. Me interesaría ver cómo se hace, por supuesto ... – gbn
¿Te vendría bien agregar otra columna con una intercalación de mayúsculas y minúsculas y una restricción uniquness? –
Creo que este tema es una buena ayuda. http://stackoverflow.com/questions/4945349/mysql-search-with-uft8-general-ci-is-case-sensitive-for-fulltext – MahanGM