Mysql 唯一联合索引和 NULL允许重复

发布时间 2023-11-03 11:26:08作者: vx_guanchaoguo0

我内心一直认为 UNIQUE KEY 是唯一的

  • 只允许出现一个 null
  • 但是联合索引 索引就打破了这个魔咒

请看演示

为 null

原因

  • 唯一索引的作用是确保组成索引的字段的值是唯一的。

  • users 唯一索引是由 name、email 和 lebal 字段组成的。

  • users 这三个字段的组合在表中已经存在,则会触发唯一性约束错误,并阻止插入重复数据。

  • 然而,第一次插入时 lebal 字段的值是 NULL,

  • 第二次插入时 lebal 字段的值同样是 NULL。

  • 由于 NULL 不与任何非 NULL 值相等,

  • 这两个记录在唯一索引的范围内仍然被认为是不同的。

  • 因此,虽然 name 和 email 字段的值相同,但由于 lebal 字段的值不同,这两个插入操作仍然被允许。