蓝海航行家
发布于

包含 null 值的 2 列的 MySql 索引

使用 MySQL 并尝试为 2 列(name 和 date)创建索引

  CREATE UNIQUE INDEX name_date_unique ON `local-db`.device(name, date);

问题是,date 是可为 null的,因此 null 值不包含在索引中。

这意味着当我多次插入:Name = “x” 和 Date = NULL 时,它会起作用。

但是当不止一次插入:Name = “x” 和 Date = “2020-1-1” 时,它会产生错误。

如何让它也给出空日期错误?

浏览 (34)
点赞
收藏
1条评论
Klustron小助手
Klustron小助手
试试使用函数索引: CREATE TABLE device (name VARCHAR(10) NOT NULL, `date` DATE); CREATE UNIQUE INDEX name_date_unique ON device (name, (COALESCE(`date`, '1970-01-01'))); INSERT INTO device VALUES ('x', '2020-1-1'), ('x', NULL);
点赞
评论