如何使用可以为null的日期在mysql中创建唯一索引

时间:2014-02-14 03:30:51

标签: mysql

我的表上有一个唯一索引,唯一索引在所有4列上。

 firstname VARCHAR NOT NULL
 lastname VARCHAR NOT NULL
 dateofbirth DATE NULL
 reference VARCHAR NULL

根据我的阅读(以及最近发现的),mysql不会对具有NULL值的列强制执行唯一性。

在我的情况下,firstname和lastname区域总是填充,但是dateofbirth和reference是可选的,默认情况下设置为null。

我已将引用列从NULL更改为NOT NULL默认值'',但是如何在不实际将列类型更改为VARCHAR的情况下对出生日期执行相同操作?

1 个答案:

答案 0 :(得分:1)

您可以为日期设置默认值:

ALTER TABLE tablename MODIFY dateofbirth DATE NOT NULL DEFAULT '0000-00-00';

执行此操作将生成警告,您可以忽略该警告:

Data truncated for column 'dateofbirth' at row xyz

更改后,之前NULL的任何值现在都设置为新的默认值。

或者,找到另一个将永远填写的列,并且可以区分具有相同名字和姓氏的两个人。