我有一个电子邮件列,我想保持唯一性。但我也希望它接受空值。这样我的数据库可以有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值。
ibeautiful
TA贡献1993条经验 获得超5个赞
避免可为空的唯一约束。您始终可以将列放在新表中,使其变为非空且唯一,然后仅在具有值时填充该表。这样可以确保对列的任何键依赖关系都可以正确实施,并避免了可能由null引起的任何问题。
添加回答
举报
0/150
提交
取消