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

The*_*tor 122 mysql database-design constraints

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

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

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

更新:列不是空的.这就是我无法做到这一点的原因.

小智 180

是的,你可以这样做.请参阅MySQL参考(版本5.5).

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

  • 谢谢.我必须让它可以为空 (8认同)

cha*_*aos 13

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


cg.*_*cg. 8

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