唯一约束,允许在MySQL中使用空值


125

我有一个存储产品代码的字段。该代码是唯一的,但是某些产品根本没有代码。我无法发明代码,因为它们是提供商代码。

在MySQL中这种约束可能吗?

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

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



@AmirAliAkbari这两个如何相互链接为“可能的重复”,这很有趣。不过,这是一个较旧的。:)
Pijusn

Answers:


182

是的,您可以这样做。参见MySQL参考(版本5.5)

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


8
谢谢。我必须使其变为可为空
Disintegrator

在Django模型中有这个问题。使它可以为空。谢谢
Shrey

13

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


谢谢。我必须使其变为可为空
Disintegrator

8

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


谢谢。我必须使其变为可为空
Disintegrator

@MianAnjum粗体显示:CREATE TABLE tablekeyint(11)NOT NULL AUTO_INCREMENT,fieldtinyint(1)DEFAULT NULL
Paul Nowak
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.