一尘不染

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

mysql

我有一个电子邮件列,我想保持唯一性。但我也希望它接受空值。这样我的数据库可以有2个空电子邮件吗?


阅读 287

收藏
2020-05-17

共1个答案

一尘不染

是的,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值。

2020-05-17