2014-07-10 28 views
0

我有以下問題:我必須存儲一個日期,但因爲只有一年可以確定的月份和日期爲 可以爲空。問題是當我插入一個新行與同一年零月供,零一天這將是一個重複的條目唯一列+可空列


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日。

請幫助我,我就試圖找到它的解決方案,但也許我用錯了關鍵字,但沒find.Thank你的幫助

回答

1

如果您設置唯一鍵跨越所有三列,那麼違反約束的唯一行就是所有三個(日,月,年)都是非空且相同的行。

the docs

此限制不適用於NULL除了BDB存儲引擎值。對於其他引擎,UNIQUE索引允許可以包含NULL的列的多個NULL值。