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