我的表上有一个唯一索引,唯一索引在所有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的情况下对出生日期执行相同操作?
答案 0 :(得分:1)
您可以为日期设置默认值:
ALTER TABLE tablename MODIFY dateofbirth DATE NOT NULL DEFAULT '0000-00-00';
执行此操作将生成警告,您可以忽略该警告:
Data truncated for column 'dateofbirth' at row xyz
更改后,之前NULL
的任何值现在都设置为新的默认值。
或者,找到另一个将永远填写的列,并且可以区分具有相同名字和姓氏的两个人。