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

我有一个电子邮件专栏,我希望它是独一无二的。但我也希望它接受空值。我的数据库可以有 2 个空电子邮件吗?

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

发表评论