如何设置Mysql中AUTO_INCREMENT的字段为0。

问题:

 

假设有这样的一个表:

CREATE TABLE `test` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `name` varchar(60) NOT NULL DEFAULT '',

  PRIMARY KEY (`id`),

  UNIQUE KEY `name` (`name`),

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

如何这个表的AUTO_INCREMENT字段值设置为0呢?

 

尝试使用:INSERT INTO `test` (id, name) VALUES (0, 'Name 0'); 执行下来结果是id自动为1了。

所以如果需要上面的语句有效的执行,需要在执行sql语句前先执行:

SET sql_mode='NO_AUTO_VALUE_ON_ZERO';

然后再执行:

INSERT INTO `test` (id, name) VALUES (0, 'Name 0');

 

分析:

一般情况下,自增长的字段(AUTO_INCREMENT)在遇到NULL 或者 0 的时候,会产生一个自动的增长的值。

但是,如果设置NO_AUTO_VALUE_ON_ZERO模式之后,就禁止遇到0自增长了。所以,这种模式一般用于需要将0写入自增长字段的情况(官方不推荐存储0)。

 

博客分类: 
You voted 3. Total votes: 1607

添加新评论