我试图让作者的名字独一无二。但是,如果我尝试,
create table author(author_id int auto_increment primary key, firstname varchar(20), middlename varchar(20), lastname varchar(20)) auto_increment = 1001;
alter table author add unique(firstname, middlename, lastname);
示例1:
insert into author(firstname, middlename, lastname) values('Alice',null,null);
insert into author(firstname, middlename, lastname) values('Alice',null,null);
select * from author;
1001 | Alice | NULL | NULL
1002 | Alice | NULL | NULL
如果我给出所有三个名称部分,它就可以正常工作。
示例2:
insert into author(firstname,middlename,lastname) values('Alice','Bob','Charlie');
insert into author(firstname,middlename,lastname) values('Alice','Bob','Charlie');
>> Error...Duplicate
为什么不考虑带null的名称?
即使对于示例1,如何使其独一无二?
答案 0 :(得分:3)
答案 1 :(得分:1)
而不是NULL,使用空字符串(''),以便您的DML变为,
insert into author(firstname, middlename, lastname) values('Alice','','');
insert into author(firstname, middlename, lastname) values('Alice','','');
>> Error: Duplicate Entry
MySql不知道null,因此我们需要这种方式。谢谢,如果有人努力但无法回答。