MySQL设置自增初始值和步长

原创 2018年04月16日 10:05:12

我这里使用的为Navicat:

(一般设置特殊的自增值和自增步长是为了:当数据出现错乱时,我们需要将备份的数据和线上的数据进行比对时使用。)

我们可以通过:SHOW VARIABLES LIKE 'auto_inc%'; 查看当前数据库的自增长设置。


auto_increment_increment这是自增长的步长。

auto_increment_offset这是自增长开始的值。

假如有一张test表,我们要给它增加一个自增列(id列)。

为表增加自增列的方法:

alter table `test`add id BIGINT; -- 为test表增加一个名称为id,类型为bigint的列.

alter table `test` change id id BIGINT not null auto_increment primary key; -- 将id列设置为主键并且自增.

那么如果使用默认值的时候,id列的值就是:1,2,3,4,5......


现在想要更改test表的id增长开始值和增长的步长,可以使用如下方法:

SET @@auto_increment_increment=3; -- 将自增长步长设置为3

SET @@auto_increment_offset=4; -- 将自增长开始值设置为4

我们先看下设置的自增步长和初始值是否改变了:再次执行SHOW VARIABLES LIKE 'auto_inc%'; 


通过查询结果,我们可以看到,自增步长和初始值已经被改变,那么接下来我们看一下id值会不会按照我们的期望进行设置。

设置之前,需要删除test表已有的id列,然后重新进行设置:

第一步:删除test表的id列;

alter table `test` drop column id; 

第二步:重新生成主键id,并设置成自增;

alter table `test`add id BIGINT;

alter table `test` change id id BIGINT not null auto_increment primary key;

查看一下结果,看是不是我们期望的值:


通过结果可以看到:从第二行开始,确实符合我们的设置。

但是:id是从3开始的,这与我们的设置并不一样,我们设置的为从4开始,怎么回事?怎么解决?

先提供一种比较low的方案解决这个问题:这里我还没找到更好的解决方案,后续有好的方案会更新。

比较low的方案:我们在这里增加一行值,将id设置为1,然后再执行删除id列,生成id列并设置自增,这样生成数据后,我们只需要删除第一行我们增加的列就可以达到目的了。


通用解决方案:待更新。

查找了一下博客,并没有找到更好的解决办法,但是找到了产生这种情况的原因,大家可以看一下:

MySQL设置自增初始值不匹配的问题(https://blog.csdn.net/whereismatrix/article/details/54667502)




mySQL之自增列起始值、步长

show create table \G alter table userinfo auto_increment=20 desc userinfo:拿到表的描述信息如下 ...
  • qq_33733970
  • qq_33733970
  • 2017-09-02 10:05:45
  • 1107

mysql 自增步长设置

设置自增列的步长,可以分为全局级别和会话级别,如果是会话级别,那么当用户新建一个会话的时候,那么步长又回到了全局级别,所以mysql的步长跟sqlserver的步长有很大的不同,mysql不能设置为表...
  • Yaroo
  • Yaroo
  • 2017-11-07 10:57:49
  • 950

mysql id指定自增长步长

SHOW VARIABLES LIKE 'auto_inc%'; SET @@auto_increment_increment=2; information...
  • u012272186
  • u012272186
  • 2017-03-14 16:55:38
  • 690

mysql数据库设置自增id初始值

如果希望一个数据表中数据的id不要从1开始而是 id从10000开始 alter table users AUTO_INCREMENT=10000; 运行这句话就可以了...
  • personbing
  • personbing
  • 2016-02-16 21:47:20
  • 3627

mysql自增ID起始值修改方法

mysql自增ID起始值修改方法
  • u014593098
  • u014593098
  • 2014-11-19 14:05:34
  • 3883

powerdesigner 设置自动增长列(identity),和默认值

一、powerdesigner 设置自动增长列(identity),和默认值 1、在物理数据模型下设置 2、DBMS设置问题,当是SQL2000时,DBMS一定要选SQL2000 DataBa...
  • macavalier
  • macavalier
  • 2013-10-29 16:21:37
  • 2005

mysql 自动增长起始值设置

alter table host_url_result AUTO_INCREMENT=1;
  • tengdazhang770960436
  • tengdazhang770960436
  • 2014-11-22 15:01:19
  • 1512

Mysql设置自增长主键的初始值

alter table table_name auto_increment=n; 注意n只能大于已有的auto_increment的整数值,小于的值无效. show table status li...
  • dlm_211314
  • dlm_211314
  • 2014-10-05 18:02:55
  • 2353

通过设置AUTO_INCREMENT设置自增起始值

我们在phpmysqliadmin管理工具创建数据库时,如果设置了自增主键,则从1开始,步长为1。但是有时候,比如我们创建员工编号或者学生证号的时候,希望能够从某个起始值开始自增。建表时设置自增起始值...
  • koastal
  • koastal
  • 2016-02-26 16:52:05
  • 2703

power designer里怎样指定auto_increment及初始值(mysql数据库)

我在建立的物理模型中,新建了一个表student,想将其id设置为自增列,初始值为30. --我使用的是mysql数据库 1:改数据库设置。 在database菜单下,选择change curr...
  • YABIGNSHI
  • YABIGNSHI
  • 2015-06-08 11:44:37
  • 2389
收藏助手
不良信息举报
您举报文章:MySQL设置自增初始值和步长
举报原因:
原因补充:

(最多只允许输入30个字)