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

我有一个存储产品代码的字段。这些代码是独一无二的,但是有些产品根本就没有代码。我不能发明代码,因为那些是供应商代码。

这种约束在 MySQL 中可能吗?

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

更新: 列是 NOTNULL。这就是为什么我不能这样做。

53035 次浏览

是的,你可以做到这一点。看到 MySQL 引用(版本5.5)

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

MySQL 仍然允许多行在一个唯一列中的值为 NULL

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