表结构如下:
CREATE TABLE `testID` (
`ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`t_date` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
插入如下纪录:
INSERT INTO testID VALUES(0,NOW());查看表中数据时 ID并不是0而是自增的ID号,为什么不能插入0这条纪录呢。
可以把ID修改成0;
CREATE TABLE `testID` (
`ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`t_date` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
插入如下纪录:
INSERT INTO testID VALUES(0,NOW());查看表中数据时 ID并不是0而是自增的ID号,为什么不能插入0这条纪录呢。
可以把ID修改成0;
NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。(不推荐采用该惯例)。例如,如果你用mysqldump转储表并重载,MySQL遇到0值一般会生成新的序列号,生成的表的内容与转储的表不同。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO可以解决该问题。