在INSERT期间省略"NOT NULL"值会将其默认为0.为什么?

tim*_*mkg 4 mysql sql

我有以下表结构:

在此输入图像描述

badge_id并且interface_id主键.

当我尝试仅指定INSERT操作时badge_id,我预计它会失败,但interface_id 默认为0.

在此输入图像描述

我正在运行以下版本:

在此输入图像描述

有人可以解释为什么它默认为零?这不应该失败吗?提前致谢.

Joc*_*lyn 5

答案在CREATE TABLE的文档中:

如果列定义不包含显式DEFAULT值,则MySQL将确定默认值,如第11.5节"数据类型默认值"中所述.

数据类型默认值中提供了更多信息:

隐式默认值定义如下:对于数值类型,默认值为0,但对于使用AUTO_INCREMENT属性声明的整数或浮点类型,默认值是序列中的下一个值.