mysql设置非空自增约束_MySQL 非空约束位置不同对自增列造成的影响

MySQL版本

select version();

+------------+

| version() |

+------------+

| 5.7.21-log |

+------------+

1 row in set (0.00 sec)

非空约束为null 并在自增列属性前

即使自增列的非空约束定义可以为 null,但实际自增列为not null

create table test_auto_incre(id int null auto_increment,id2 int default null ,key idx_id(id));

show create table test_auto_incre;

CREATE TABLE test_auto_incre (

id int(11) NOT NULL AUTO_INCREMENT ,

id2 int(11) DEFAULT NULL,

KEY idx_id ( id )

) ENGINE=InnoDB DEFAULT CHARSET=utf8

insert into test_auto_incre(id2) values(12),(2312); select * from test_auto_incre; +----+------+ | id | id2 | +----+------+ | 1 | 12 | | 2 | 2312 | +----+------+ 2 rows in set (0.00 sec)

非空约束为null 并在自增列属性后

自增列定义可以为null,实际自增列也可以为null;自增列失去作用!

create table test_auto_incre2(id int auto_increment null ,id2 int null,key idx_id(id));

Query OK, 0 rows affected (0.02 sec)

非空约束在自增列属性后,不是 MySQL 的标准建表语句,但建该表没有报错和警告

show create table test_auto_incre2;

CREATE TABLE test_auto_incre2 (

id int(11) AUTO_INCREMENT ,

id2 int(11) DEFAULT NULL,

KEY idx_id ( id )

) ENGINE=InnoDB;

插入数据

insert into test_auto_incre2(id2) values(12),(2312);

select * from test_auto_incre2;

+------+------+

| id | id2 |

+------+------+

| NULL | 12 |

| NULL | 2312 |

+------+------+

2 rows in set (0.00 sec)

非空约束为not null 并在自增列属性后

create table test_auto_incre2(id int auto_increment not null ,id2 int null,key idx_id(id));

show create table test_auto_incre2;

CREATE TABLE test_auto_incre2 (

id int(11) NOT NULL AUTO_INCREMENT,

id2 int(11) DEFAULT NULL,

KEY idx_id ( id )

) ENGINE=InnoDB A

插入数据

insert into test_auto_incre2(id2) values(12),(2312); select * from test_auto_incre2; +----+------+ | id | id2 | +----+------+ | 1 | 12 | | 2 | 2312 | +----+------+

MySQL标准建表语法

e498a39c916e62978adadbb8473425dc.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值