我有一个包含video_id字段的表,该字段设置为唯一的接受NULL值。但是它不会接受两个空值。表类型InnoDB或MYISAM不起作用。
这会在视频_id(空值)上产生重复键错误:
INSERT INTO dances (name, video_id, level) VALUES ('abc', '', 'beg');
如果我正确阅读了Mysql规则,它应该这样做。谁能建议下一步去哪儿?
答案 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_id
,video_id
对的单独表(where object_id
是主键在您的main table
上。