为了账号安全,请及时绑定邮箱和手机立即绑定

MySQL是否会根据唯一性约束忽略空值?

MySQL是否会根据唯一性约束忽略空值?

MMTTMM 2019-11-27 14:03:44
我有一个电子邮件列,我想保持唯一性。但我也希望它接受空值。这样我的数据库可以有2个空电子邮件吗?
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

是的,MySQL在具有唯一约束的列中允许多个NULL。


CREATE TABLE table1 (x INT NULL UNIQUE);

INSERT table1 VALUES (1);

INSERT table1 VALUES (1);   -- Duplicate entry '1' for key 'x'

INSERT table1 VALUES (NULL);

INSERT table1 VALUES (NULL);

SELECT * FROM table1;

结果:


x

NULL

NULL

1

并非对于所有数据库都是如此。例如,SQL Server 2005和更早版本仅在具有唯一约束的列中允许单个NULL值。


查看完整回答
反对 回复 2019-11-27
?
ibeautiful

TA贡献1993条经验 获得超5个赞

避免可为空的唯一约束。您始终可以将列放在新表中,使其变为非空且唯一,然后仅在具有值时填充该表。这样可以确保对列的任何键依赖关系都可以正确实施,并避免了可能由null引起的任何问题。


查看完整回答
反对 回复 2019-11-27
  • 3 回答
  • 0 关注
  • 1005 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信