我有一个包含 video_id 字段的表,该字段设置为唯一接受 NULL 值。但是它不会接受两个空值。表类型 InnoDB 或 MISAM 将不起作用。
这会在视频 _id(空值)上产生重复键错误:
INSERT INTO dances (name, video_id, level) VALUES ('abc', '', 'beg');
如果我正确阅读了 Mysql 规则,它应该这样做。谁能建议下一步去哪里?
是的,MySQL 允许在具有唯一约束的列中使用多个 NULL。请参阅此堆栈溢出问题。
空字符串''
与NULL
.
改用这个:
INSERT INTO dances (name, video_id, level) VALUES ('abc', NULL, 'beg');
你可以试试 BDB(我对此一无所知);看到这里更多。
为什么你需要多行表才能有一个空的video_id?
从数据库设计的角度来看,听起来您使用表建模的对象太大了,需要分解为主表和详细表。
您的选择是 (A) 删除 UNIQUE 约束,或 (B) 创建一个单独的表,其中包含object_id
,video_id
对(where object_id
无论您的主键是什么main table
)。