当前位置:   article > 正文

mysql联合唯一索引有字段空_MYSQL,组合的唯一索引中,处理NULL值的问题

联合唯一索引 null

create table TEST

(

col_1 INT,

col_2 INT,

col_3 VARCHAR(128) not null,

col_4 VARCHAR(128) not null,

UNIQUE KEY (col_1, col_2, col_3),

CONSTRAINT FOREIGN KEY (col_1) REFERENCES T2(ID) ON DELETE CASCADE,

CONSTRAINT FOREIGN KEY (col_2) REFERENCES T3(ID) ON DELETE CASCADE

)

comment='测试表'

ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;

本意是要求如下:

INSERT INTO TEST (col_1, col_2, col_3, col_4) VALUES (1, NULL, 'TEST', 'VALID'); //OK

INSERT INTO TEST (col_1, col_2, col_3, col_4) VALUES (1, NULL, 'TEST', 'VALID'); //ERROR

但是实际上MYSQL却可以插入数据,没有提示违反了UNIQUE KEY (col_1, col_2, col_3),这个是MYSQL对NULL处理的方法引起的。虽然很多用户在给MYSQL提了N个关于这个的BUG,但是MYSQL死抱着SQL specs不放,就是不改或者提供可选的解决方案。

那究竟有没方法可以满足我的本意呢?有人提供了这样的一个方法:

create table TEST

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/606137
推荐阅读
相关标签
  

闽ICP备14008679号