4

我有以下表结构:

在此处输入图像描述

badge_id并且interface_id主键

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

在此处输入图像描述

我正在运行以下版本:

在此处输入图像描述

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

4

2 回答 2

5

答案在CREATE TABLE的文档中:

如果列定义不包含显式 DEFAULT 值,MySQL 会根据第 11.5 节,“数据类型默认值”中的描述确定默认值。

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

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

于 2013-03-26T11:55:56.433 回答
2

看看这个:http ://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html

从 MySQL 5.0.2 开始,如果列定义不包含显式 DEFAULT 值,MySQL 将按如下方式确定默认值:

如果列可以将 NULL 作为值,则使用显式 DEFAULT NULL 子句定义该列。这与 5.0.2 之前的相同。

如果该列不能以 NULL 作为值,MySQL 将定义没有显式 DEFAULT 子句的列。对于数据输入,如果 INSERT 或 REPLACE 语句不包含列的值,则 MySQL 根据当时有效的 SQL 模式处理该列:

如果未启用严格 SQL 模式,MySQL 会将列设置为列数据类型的隐式默认值。

于 2013-03-26T11:59:10.403 回答