开发人员改主键自增列起始值多了个0 !!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发人员改主键自增列起始值多了个0 !!!相关的知识,希望对你有一定的参考价值。

2017-07-23 晚21:21接到开发打来的电话说mysql自增列改大后还能修改吗?
原由:因领导说要保留id 99999和 98888这样的id号 自己用,然后开发就自己改了user_login_account表自增列起始值,开发本想改成100002,然而他多加了一个0,搞成了1000002,这就有点杯具了,
于是开发想试图搞这个值改小成100002,结果改不回来了,他就找到我处理。本想
 
1 首先和开发沟通后确定影响到了2张表,一个表是user_login_account的自增id列,另一张表是user_info的account_id和user_code列 (非自增)
然后要查出来新数据写入了多少 条和是从哪条开始是100W自增。
1.查看user_login_account表最新数据数据写入id列为
1000412
2.id断点位置如下
| 1000004 |
| 1000003 |
| 1000002 |
| 98435 |
| 98434 |
 
1.查看user_info表最新数据数据写入account_id和user_code列为
1000412 1000412
2 account_id和user_code断点位置
| 1000006 | 1000006 |
| 1000005 | 1000005 |
| 1000004 | 1000004 |
| 1000003 | 1000003 |
| 1000002 | 1000002 |
| 98435 | 98435 |
| 98434 | 98434 |
 
解决:
改user_login_account新数据自增列,并把自增起始值改成100413,这次操作没有关业务当时看到凌晨没啥 数据写入,就直接 改了。
#!/bin/bash
 
for i in {1000002..1000412}
do
#ii=`echo ${i/00/}`
ii=$((i-900000))
mysql -udb -pabc -e "use db;update user_login_account set id=‘$ii‘ where id=‘$i‘"
done
 
ALTER TABLE user_login_account auto_increment=100413;
 
改user_info表新数据account_id列
#!/bin/bash
 
for i in {1000002..1000412}
do
ii=$((i-900000))
mysql -udb -pabc -e "use db;update user_info set account_id=‘$ii‘ where account_id=‘$i‘"
done
 
改user_info表新数据user_code列
#!/bin/bash
 
for i in {1000002..1000412}
do
ii=$((i-900000))
mysql -udb -pabc -e "use db;update user_info set user_code=‘$ii‘ where user_code=‘$i‘"
done
 
欢迎大家给出意见,大家交流,共同进步。

以上是关于开发人员改主键自增列起始值多了个0 !!!的主要内容,如果未能解决你的问题,请参考以下文章

oracel数据库主键自增

DB2 如何主键自增

如何修改mysql自增ID起始值

SQ数据库中怎样设置自增主键?

mysql如何设置ID自增

db2中插入数据后直接返回主键(自增列id)的sql怎么写