MySQL重新设置auto_increment值
需求描述
通常,我们都会在数据库表中设置一个自增字段作为主键,该字段的值会随着添加新记录而自增。
同时也必须注意,这个自增字段的值只会一直增加,即使把记录删除了,该自增字段的值也不会变小。
因此,就会产生一个现象:假如某些记录被物理删除了,那么表中记录的这个自增字段值就不是连续的。
即:通过某个自增值去查询的时候表里并不存在该记录。
处于某种目的,如果希望该自增字段值一定是连续的,有2种解决办法:
1.表记录不允许物理删除
2.物理删除表记录后重新设置auto_increment
在此,专门针对重新设置auto_increment值进行说明。
更新auto_increment值
在修改表的auto_increment值之前需要先查看当前值是多少:
mysql> select auto_increment from information_schema.tables where table_schema='数据库名' and table_name='表名';
+----------------+
| auto_increment |
+----------------+
| 60002 |
+----------------+
1 row in set (0.04 sec)
如上,table_schema参数指定数据库名,table_name参数指定表名,当前的auto_increment值为60002。
如果此时我们将表中的最后10000条数据物理删除掉,那么再插入新的记录时,auto_increment值将会继续增加:60003,60004 ... 。
显然,此时1-50002有记录,50003-60002是没有记录的。
为了使得新添加的记录自增ID再次继续从50003开始计数,执行如下语句:
mysql> alter table 表名 AUTO_INCREMENT=50002;
最后总结
直接修改auto_increment值的使用场景比较少见,通常不建议这么做。一则通过这种方式来保持自增ID的连续性增加了运维的负担,二则通常不允许直接物理删除表记录。
【参考】
https://blog.csdn.net/hehaoyang666/article/details/41281113 mysql自增ID起始值修改方法
https://blog.csdn.net/fdipzone/article/details/50421831 MySql查看与修改auto_increment方法
MySQL重新设置auto_increment值的更多相关文章
- mysql datatime 设置默认值为CURRENT_TIMESTAMP报错`Invalid default value`
环境: Ubuntu mysql 5.5 解决方法: 升级mysql至5.6 apt-cache search mysql-server sudo apt-add-repository ppa:ond ...
- Mysql数据库之auto_increment
一.概述 在数据库应用中,我们经常需要用到自动递增的唯一编号来标识记录.在MySQL中,可通过数据列的auto_increment属性来自动生成.可在建表时可用“auto_increment=n”选项 ...
- MySQL数据库之auto_increment【转】
一.概述 在数据库应用中,我们经常需要用到自动递增的唯一编号来标识记录.在MySQL中,可通过数据列的auto_increment属性来自动生成.可在建表时可用“auto_increment=n”选项 ...
- 更改mysql中当前auto_increment的值的方法
最近给自己网站更改mysql中当前auto_increment的值 如果在mysql中一个表test中的ID字段设为auto_increment插入两条记录后ID=2,这时删除1条记录,再插入一条变成 ...
- Mysql:设置主键自动增长起始值
比较郁闷昨天在家使用‘alter table `tablename` AUTO_INCREMENT=10000;’怎么也不起效,但是今天下班时间公司一同事尝试了一下就可以了.搞不明白自己当时是怎么操作 ...
- 使用mysql 命令行,增加 ,删除 字段 并 设置默认值 及 非空
使用mysql 命令行,增加 ,删除 字段 并 设置默认值 及 非空 添加 alter table table_name add field_name field_type; 添加,并设置默认值,及非 ...
- mysql datetime设置now()无效,直接用程序设置默认值比较好
mysql datetime设置now()无效的,没有此用法,datetime类型不能设置函数式默认值,只能通过触发器等来搞.想设置默认值,只能使用timestamp类型,然后默认值设置为:CURRE ...
- Linux系统优化之设置swappiness值提高MySQL查询性能
对MySQL来说,操作系统层面的优化也可以值得考虑一下:就是swappiness. swappiness的大小主要对如何使用swap分区有着密切的联系. 来看一下: [root@chaofeng ~] ...
- MySql折腾小记二:text/blog类型不允许设置默认值,不允许存在两个CURRENT_TIMESTAMP
From: http://www.cnblogs.com/cyq1162/archive/2011/05/17/2049055.html 在 CYQ.Data 数据框架的反向工程中,遇到MySQL的问 ...
- 【杂记】mysql 左右连接查询中的NULL的数据筛选问题,查询NULL设置默认值,DATE_FORMAT函数
MySQL左右连接查询中的NULL的数据筛选问题 xpression 为 Null,则 IsNull 将返回 True:否则 IsNull 将返回 False. 如果 expression 由多个变量 ...
随机推荐
- parquet极简学习
parquet极简学习 摘要 parquet的概念: Parquet文件是一种列式存储文件格式,广泛应用于大数据处理框架, 如Apache Hadoop和Apache Spark. 它通过将数据组织成 ...
- [转帖]Jmeter脚本录:抓取https请求
Jmeter抓取http请求 https://blog.csdn.net/qq19970496/article/details/86595109 代理设置步骤请参照该篇文章.本文件只做补充HTTPS中 ...
- 【转帖】JAVA GC日志分析
https://zhuanlan.zhihu.com/p/613592552 目录 1. GC分类 针对HotSpot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Par ...
- [转帖]exportfs命令
https://www.cnblogs.com/xzlive/p/9766388.html exportfs命令:功能说明 :NFS共享管理语法格式exportfs [必要参数][选择参数][目录]功 ...
- 【转贴】java 进程运行状态图解
java 进程运行状态图解 原文博客地址 https://www.cnblogs.com/GooPolaris/p/8079490.html java中进程的状态有 6 种: NEW(新建).RU ...
- 京东金融APP-新交互技术“虚拟数字人”赋能世界杯主题营销
作者:平台研发部,智能服务与产品部 距离加文·伍德提出web3.0已经过去8年时间,这8年加文·伍德创建的以太坊大放异彩,同时由web3.0引出的数字人.元宇宙也生根发芽,茁壮成长,带来了非凡的用户体 ...
- XCODE IOS 静态链接库替换升级
XCODE 版本15.2. 一个很久需求没更新的IOS 应用,近来有新需求要开发. 拉下代码运行,出现了个BAD_ACCESS错误.出错的位置位于一个调用的第三方的.a静态库内部.因为调用代码并没有修 ...
- js正则手机号 验证
注意一下 现在手机号第二位是不是 只有3 4 5 7 8这几个数, 如果还有请告诉我,否则这个正则表达式式错误的. <div id="app"> <el-inpu ...
- Golang Map底层实现简述
Go的map是一种高效的数据结构,用于存储键值对.其底层实现是一个哈希表(hash table),下面是有关map底层实现的详细介绍: 哈希表: map的底层实现是一个哈希表,也称为散列表.哈希表是一 ...
- [3] 以逆向的角度来看循环语句——do、while、for的比较
[3] 以逆向的角度来看循环语句--do.while.for的比较 1. do循环 先执行循环体,后比较判断 #include <stdio.h> int main(int argc, ...