允许空值的唯一约束在MySQL中的实现

129
我有一个存储产品代码的字段。这些代码是唯一的,但有些产品没有代码。我不能发明代码,因为那些是供应商的代码。
MySQL是否可以实现这种约束?
我对存储过程和触发器不熟悉,所以如果解决方案涉及其中之一,请耐心指导。
更新: 该列不为空。这就是我无法实现此操作的原因。

可能是Does MySQL ignore null values on unique constraints?的重复。 - Amir Ali Akbari
3个回答

188

是的,你可以这样做。请参考MySQL参考手册(版本5.5)

UNIQUE索引创建了一个约束条件,使得索引中的所有值必须是唯一的。如果您尝试添加一个具有与现有行匹配的键值的新行,则会出现错误。对于所有引擎,UNIQUE索引允许在可以包含NULL的列中使用多个NULL值。


8
谢谢。我必须将其设置为可空的。 - The Disintegrator
在 Django 模型中遇到了这个问题。将其设置为可空即可解决。谢谢。 - Shrey

13

是的,如果将产品代码列设置为可空(未声明为 NOT NULL ),则唯一键将允许具有 NULL 产品代码的多行。


谢谢。我必须使它可为空。 - The Disintegrator

8

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


谢谢。我必须使它可为空。 - The Disintegrator
@MianAnjum 加粗部分:CREATE TABLE table (key int(11) NOT NULL AUTO_INCREMENT, field tinyint(1) DEFAULT NULL) - Paul Nowak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接