Mysql 在语句中给主键(自增长的)赋值null,会自增长吗?原理是怎样的?

环境:XAMPP(MySQL 5.5.53) & MySQL 5.5.53

问题描述:

鄙人在开发网站的时候(刚开始用的集成环境XAMPP),无意中写错一个mysql命令:

insert into book(id,book_number,shop_name,create_username,update_username,remark) values('',13456789,'','','','');

本以为自己在命令中为主键的值添加了一个 '' 这样的空值会导致sql执行失败,但是惊奇地发现语句执行成功了!并且主键还是自增长的???

于是好奇宝宝又去特意找了单纯的MySQL环境又试了一遍,单纯的MySQL环境下,给id赋null 依旧是会自增长的,但是赋值 '' 会出错(id 是 int 类型的!!!)

想问下诸位大佬们,这是啥情况,有没有能哪位好心的大佬能告诉我这个原理是啥?

老婆要给我零花钱,允许我每天从存钱罐都能比昨天多拿一块钱。我第一天拿1块,第二天拿2块,后来到了100天,老婆发现你他娘的怎么拿这么多!这次只允许给我拿10块!
程序上来说,从1到100天就是ID 1到100,老婆让拿10元那也没办法只能拿,报错呗。
第101天,老婆说,给我拿''元!

填空值,填空值,你可以理解为没人管。 null吧你

看你原来表里字段的主键

建议楼主搜索下“ID生成策略”希望能帮到你

自增不能给NULL吧

主键默认约束应该是不允许为会的吧?

主键约束类型不能 设为null

我一直这么用'',相信事实。

insert into book(book_number,shop_name,create_username,update_username,remark) values(13456789,'','','','');
去了id
‘’在sql中是char类型