delete_time联合唯一索引不生效
使用delete_time作为逻辑删除字段,默认为null值,经测试null值建立的唯一索引是不生效的,如下面的建表语句,仍然可以插入相同username的数据
1 | CREATE TABLE lin_user<br>(<br> id int (10) unsigned NOT NULL AUTO_INCREMENT,<br> username varchar (24) NOT NULL COMMENT '用户名,唯一' ,<br> nickname varchar (24) DEFAULT NULL COMMENT '用户昵称' ,<br> avatar varchar (500) DEFAULT NULL COMMENT '头像url' ,<br> email varchar (100) DEFAULT NULL COMMENT '邮箱' ,<br> create_time datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP (3),<br> update_time datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP (3) ON UPDATE CURRENT_TIMESTAMP (3),<br> delete_time datetime(3) DEFAULT NULL ,<br> PRIMARY KEY (id),<br> UNIQUE KEY username_del (username, delete_time),<br> UNIQUE KEY email_del (email, delete_time)<br>) ENGINE = InnoDB<br> DEFAULT CHARSET = utf8mb4;<br> |
26
收起
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧