MySQL是否会忽略唯一约束中的空值?

19 浏览
0 Comments

MySQL是否会忽略唯一约束中的空值?

我有一个电子邮件列,我希望它是唯一的。但我也希望它接受空值。我的数据库可以有两个空电子邮件吗?

admin 更改状态以发布 2023年5月24日
0
0 Comments

文档中得知:

"唯一索引允许在可以包含NULL值的列中存在多个NULL值"

这适用于所有引擎,但BDB除外。

0
0 Comments

MySQL允许一个唯一约束条件下的列中有多个空值。

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及更早版本只允许在唯一约束条件下的列中有一个空值。

0