具有唯一列+可空列的表

时间:2014-07-10 22:44:25

标签: mysql sql

我有以下问题:我必须存储日期但是 因为只有一年可以确定月份和日期 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日。

请帮助我,我试图找到它的解决方案,但也许我使用了错误的关键字,但没有找到。谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

如果您将唯一键设置为跨越所有三列,则唯一违反约束的行是那三个(日,月,年)非空且相同的行。

来自the docs

  

此约束不适用于除BDB存储引擎之外的NULL值。对于其他引擎,UNIQUE索引允许包含NULL的列的多个NULL值。