2

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

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

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

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

4

3 回答 3

2

是的,MySQL 允许在具有唯一约束的列中使用多个 NULL。请参阅此堆栈溢出问题

空字符串''NULL.

改用这个:

INSERT INTO dances (name, video_id, level) VALUES ('abc', NULL, 'beg');
于 2013-06-19T07:56:39.633 回答
1

你可以试试 BDB(我对此一无所知);看到这里更多。

于 2013-06-19T07:29:57.900 回答
0

为什么你需要多行表才能有一个空的video_id?

从数据库设计的角度来看,听起来您使用表建模的对象太大了,需要分解为主表和详细表。

您的选择是 (A) 删除 UNIQUE 约束,或 (B) 创建一个单独的表,其中包含object_id,video_id对(where object_id无论您的主键是什么main table)。

于 2013-06-19T07:28:24.137 回答