【问题标题】:InnoDB: UNIQUE IF NOT NULLInnoDB:如果不为空,则唯一
【发布时间】:2013-03-30 23:32:09
【问题描述】:

InnoDB 是否支持“UNIQUE IF NOT NULL”索引? IE。一个允许多个 NULL 值的唯一索引?

(我想没有,因为我无法找到任何相关信息 - 找到了很多有点相关的东西,但没有明确的答案)

【问题讨论】:

    标签: indexing innodb unique


    【解决方案1】:

    在 InnoDB 中,唯一的二级索引支持多个 NULL(主索引根本不支持 NULL)。例如:

    mysql> create table x (i int, j int, primary key (i), unique key (j));
    mysql> insert into x (i,j) values (NULL,NULL);
    ERROR 1048 (23000): Column 'i' cannot be null
    mysql> insert into x (i,j) values (1,NULL);
    mysql> insert into x (i,j) values (2,NULL);
    mysql> insert into x (i,j) values (3,3);
    mysql> select * from x;
    +---+------+
    | i | j    |
    +---+------+
    | 1 | NULL |
    | 2 | NULL |
    | 3 |    3 |
    +---+------+
    3 rows in set (0.01 sec)
    
    mysql> insert into x (i,j) values (4,3);
    ERROR 1062 (23000): Duplicate entry '3' for key 'j'
    

    【讨论】:

    • 哦,谢谢,我不知道! (很奇怪,我在谷歌上找不到它)
    猜你喜欢
    • 2011-12-18
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多