MySQL AUTO_INCREMENT 自动增长的一些知识

1, 指定了AUTO_INCREMENT的列必须要建索引,不然会报错,索引可以为主键索引,当然也可以为非主键索引。(不一定要做主键)


2, 指定了auto_increment的列,在插入时:

如果把一个NULL插入到一个AUTO_INCREMENT数据列里去,MySQL将自动生成下一个序列编号。编号从1开始,并1为基数递增。


3,当插入记录时,没有为AUTO_INCREMENT明确指定值,则等同插入NULL值。


4,如果插入的值大于已编号的值,则会把该插入到数据列中,并使在下一个编号将从这个新值开始递增。


5,对于MyISAM表,如果用UPDATE命令更新自增列,如果列值与已有的值重复,则会出错。如果大于已有值,则下一个编号从该值开始递增。但是对于innodb表,update auto_increment字段,会导致发生报错


6,delete from t3该语句不会引起auto_increment的变化,


7,truncate table 该语句会引起auto_increment的变化,从头开始。因为该命令是原来的表,然后重新创建一个表。 删除速度更快。


8,修改AUTO_INCREMENT字段的起始值

alter table table_name AUTO_INCREMENT=n

但是如果设置的n比目前的数值小的话,执行的sql不会报错,但是不会生效!MyISAM和Innodb均是如此。


9,auto_increment_increment & auto_increment_offset 两个变量的介绍


真诚赞赏,手留余香
赞赏
随机推荐
Node.js Stream(数据流)
数位板随手画,游戏《饥荒》里的人物
Javascript去字符串前后空格5种实现方法及比较
Node.js 图片处理模块 Jimp
Koa.js 限流中间件 koa-ratelimit
Node.js i18n 国际化实现语言切换
Vue2.5中,父组件created钩子异步获取数据,子组件没有更新绑定的参数
20170115 数位板 起步
Thinkcmf根据导航分类获取导航
使用FormData无刷新上传文件