mysql - mysql中的多个唯一不支持NULL

标签 mysql unique

ALTER TABLE admins ADD CONSTRAINT uc_EmailandDeleted_at UNIQUE (email,deleted_at);

我已经将我的表更改为这样工作:

ID  EMAIL                  DELETED_AT  
1.  user@example.com          NULL             <- accept  
2.  user@example.com          NULL             <- reject because of uniqueness.

但它并没有像我希望的那样工作。如果我给了两个相同的日期

deleted_at
正如我所料,它正在产生错误。但不适用于 NULL 值。有什么想法吗?

注意:我无法更改 deleted_at 列的行为,因为我正在使用 acts_as_paranoid。所以我必须将 deleted_at 字段保持为 NULL 或任何日期。

最佳答案

来自 the documentation :

A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if you try to add a new row with a key value that matches an existing row. This constraint does not apply to NULL values except for the BDB storage engine. For other engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL.

以上摘录自 MySQL 5.0。 MySQL 在 5.1.12 中放弃了 BDB 存储引擎。 所以现在从最新documentation :

For all engines, a UNIQUE index permits multiple NULL values for columns that can contain NULL. If you specify a prefix value for a column in a UNIQUE index, the column values must be unique within the prefix.

关于mysql - mysql中的多个唯一不支持NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6851584/

相关文章:

php - 我对 sql 查询感到困惑

javascript - 返回函数 JavaScript

mysql - 我如何调整这个 3 表 MySQL 连接查询以消除包含空值列的行?

javascript - PHP 文件未通过 AJAX 调用

jquery - 为可放置的项目添加唯一的 ID

javascript - 如何使用javascript给一个div标签一个唯一的id

R:独特的组合(避免a-b和b-a以及相同的例如a-a,b-b)

php - 如何告诉用户数据库中没有用户输入的特定日期的数据

r - 如何粘贴数据框行中的文本,仅保留 R 中的唯一值

javascript - 检查多维数组中的数组(pref-jQuery)