如何使用utf8\u bin排序规则禁止重复条目,其中唯一的区别是大小写?

noj0wjuj  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(248)

我有一张table user 和整理- utf8_bin :

CREATE TABLE user (
    user_id bigint(20) NOT NULL AUTO_INCREMENT,
    user_name varchar(192) COLLATE utf8_bin NOT NULL,
    admin_id int(11) NOT NULL,
    PRIMARY KEY (user_id),
    UNIQUE KEY admin_id_user_name (admin_id,user_name),
    CONSTRAINT admin_fk_1 FOREIGN KEY (admin_id) REFERENCES admin (admin_id)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

我不允许在唯一不同的地方插入相同的条目。在我看来 utf8_bin 整理应该对我的这种方法有所帮助。但我不工作。当我尝试插入新条目时,与前一条不同的是,条目被插入。

user_id  | user_name | admin_id
    _______________________________
        1    |    name   |    1
    _______________________________
        2    |    Name   |    1

你知道怎么禁止这个吗?

yrwegjxp

yrwegjxp1#

这很正常。utf8\u bin基于其unicode比较值(检查代码点以供参考)
如果您想要一个包含区分大小写的数据的表,可以使用utf8\u unicode\u cs(区分大小写)
请注意,utf8\u bin和utf8\u defaut\u ci不区分大小写。
仅供参考:所有编码中的cs表示区分大小写,ci表示不区分大小写。

相关问题