mysql联合唯一索引有字段空_MYSQL,组合的唯一索引中,处理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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值