允许MySQL中为空值的唯一约束

时间:2009-08-28 12:39:03

标签: mysql database-design constraints

我有一个存储产品代码的字段。代码是唯一的,但有些产品根本没有代码。我不能发明代码,因为它们是提供者代码。

这种约束在MySQL中是否可行?

我是存储过程和触发器的菜鸟,所以如果解决方案涉及其中之一,请耐心等待。

更新: 该列不是空的。这就是为什么我无法做到这一点。

3 个答案:

答案 0 :(得分:178)

是的,你可以这样做。请参阅MySQL reference (version 5.5)

  

UNIQUE索引创建一个约束,使索引中的所有值必须是不同的。如果您尝试添加具有与现有行匹配的键值的新行,则会发生错误。对于所有引擎,UNIQUE索引允许包含NULL的列的多个NULL值。

答案 1 :(得分:13)

是的,如果您将产品代码列设为可空(未使用NOT NULL声明),则唯一键将允许多行包含NULL个产品代码。

答案 2 :(得分:8)

MySQL仍然允许多行在唯一列中具有值NULL