我有一个带有字段a的表,使用的编码是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中似乎无法为索引设置校对规则。
解决此问题的方法包括在插入之前进行唯一性检查或触发器。但这两种方法都不如使用唯一索引优雅。