【问题标题】:Unique constraint that allows empty values in MySQLMySQL 中允许空值的唯一约束
【发布时间】:2010-11-23 17:21:49
【问题描述】:

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

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

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

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

【问题讨论】:

标签: mysql database-design constraints


【解决方案1】:

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

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

【讨论】:

  • 谢谢。我必须让它可以为空
  • 在 django 模型中有这个问题。使其可以为空有效。谢谢
【解决方案2】:

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

【讨论】:

  • 谢谢。我必须让它可以为空
【解决方案3】:

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

【讨论】:

  • 谢谢。我必须让它可以为空
  • @MianAnjum 粗体:CREATE TABLE table (key int(11) NOT NULL AUTO_INCREMENT, field tinyint(1) DEFAULT NULL)
猜你喜欢
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多