我有以下问题:我必须存储日期但是 因为只有一年可以确定月份和日期 nullable。问题是当我插入一个同一年的新行并且该月为null而当天为null时它将是一个重复的条目
create table date('id' int(10) not null auto_increment,
'Year' int(4) not null,
'Month' int(2) default null,
'Day' int(2) default null,
Primary key('id'),
Unique Key 'Year');
insert into date ('id','Year','Month','Day')
值(1,1990,NuLL,NULL), (2,1992,NULL,NULL), (3,1990,NULL,NULL);
即使是唯一约束,它也将是1990年的两个条目,其中包含NULL月和NULL日。
请帮助我,我试图找到它的解决方案,但也许我使用了错误的关键字,但没有找到。谢谢你的帮助
答案 0 :(得分:1)
如果您将唯一键设置为跨越所有三列,则唯一违反约束的行是那三个(日,月,年)非空且相同的行。
来自the docs:
此约束不适用于除BDB存储引擎之外的NULL值。对于其他引擎,UNIQUE索引允许包含NULL的列的多个NULL值。