求解 MySQL auto_increment 的问题
PHP中文网
PHP中文网 2017-04-17 11:10:44
[MySQL讨论组]

今天看后台数据表结构时发现一个俺从来没有见过的设置
auto_increment=任意数字的值
比如表结构是:

create table cj(  
 `nid` varchar(10),  
 `cid` varchar(10)  
)ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=40;  

这个AUTOINCREMENT=40在每张表里都有不同的值
发现他们有=1的,有=2的,也有=20的,
不同的表它的值也不完全一样,这个值是做什么用的?
那些情况下会考虑在auto
increment后面设定值呢?
先谢谢各位大神啦,o(∩∩)o...哈哈

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
高洛峰

作用吗:数值型自增 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 
迷茫

AUTO_INCREMENT=40 表示从id(InnoDB如果没有显示声明的话会自动生成主键)从初始为40的地方开始自增长

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号