Mysql唯一字段不会接受多个空值

时间:2013-06-19 07:19:59

标签: mysql sql null unique

我有一个包含video_id字段的表,该字段设置为唯一的接受NULL值。但是它不会接受两个空值。表类型InnoDB或MYISAM不起作用。

这会在视频_id(空值)上产生重复键错误:

INSERT INTO dances (name, video_id, level) VALUES ('abc', '', 'beg');

如果我正确阅读了Mysql规则,它应该这样做。谁能建议下一步去哪儿?

3 个答案:

答案 0 :(得分:2)

是的,MySQL允许具有唯一约束的列中的多个NULL。请参阅this Stack Overflow question

空字符串''NULL不同。

请改用:

INSERT INTO dances (name, video_id, level) VALUES ('abc', NULL, 'beg');

答案 1 :(得分:1)

你可以尝试BDB(我对此一无所知);有关详情,请参阅here

答案 2 :(得分:0)

为什么你需要表的多行才能获得null video_id?

从数据库设计的角度来看,它听起来像你用表格建模的对象太“大”,需要分解成主表和详细信息表。

您的选项是(A)删除UNIQUE约束,或(B)创建一个包含object_idvideo_id对的单独表(where object_id主键在您的main table上。