表查询:
CREATE TABLE `TESTING_TABLE` (
`ID` char(36) COLLATE utf8_bin NOT NULL,
`NAME` char(36) COLLATE utf8_bin NOT NULL,
`DISPLAY_NAME` varchar(128) COLLATE utf8_bin NOT NULL,
UNIQUE KEY `DISPLAY_NAME_UK` (`NAME`,`DISPLAY_NAME`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
第一行插入:
INSERT INTO `TESTING_TABLE` (`ID`, `NAME`, `DISPLAY_NAME`) VALUES ('1', 'Foo', 'Bar');
第二行插入:
INSERT INTO `TESTING_TABLE` (`ID`, `NAME`, `DISPLAY_NAME`) VALUES ('2', 'Foo', 'bar');
由于我有“display\u name\u uk”唯一约束,我希望第二行insert会抛出“duplicate entry”异常。但它允许在display\u name列中使用区分大小写的值。如何使其不区分大小写?
2条答案
按热度按时间rsl1atfo1#
用utf8\u general\u ci替换utf8\u bin
rjjhvcjd2#
如果希望“bar”和“bar”被视为相同的值,这不是区分大小写,而是不区分大小写。
最简单的方法可能是使用不区分大小写的排序规则,如
utf8mb4
.