开发者社区> 问答> 正文

关于MySQL auto_increment 的问题

看后台数据表结构时发现一个从来没有见过的设置
auto_increment=任意数字的值
比如表结构是:
create table cj(
nid varchar(10),
cid varchar(10)
)ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40;
这个AUTOINCREMENT=40在每张表里都有不同的值
发现他们有=1的,有=2的,也有=20的,
不同的表它的值也不完全一样,这个值是做什么用的?
那些情况下会考虑在autoincrement后面设定值呢?

展开
收起
蛮大人123 2016-02-07 16:21:40 2566 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    数值型自增 unique 标志。也就是自我插入型标识唯一record(区别于其它必须自己生成unique 的 唯一主键列)什么情况下考虑:当你不想它的id从1开始自增就可以设定。其实表中有数据,有没有都无所谓...,因为是服务器session内有效。 这个值只在两种情况下设置:
    1.建表:建表修改起始值,完成后这个值就会保存在内存中,每次重启mysql服务器,innodb都要自己去查询这个值,重新计算的
    2.alter:使用alter可以临时改变内存中的auto_increment值,但重启mysql服务器,innodb都会自己重新计算.
    3.这个值只保存在内存中,每次重启mysql相当于以下操作:
    select MAX(id) as max_id from table
    set auto_increment = max_id+1

    2019-07-17 18:39:11
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像