mysql自增ID起始值修改方法

在mysql中很多朋友都认为字段为AUTO_INCREMENT类型自增ID值是无法修改,其实这样理解是错误的,下面介绍mysql自增ID的起始值修改与设置方法。
通常的设置自增字段的方法:
创建表格时添加:


代码如下:

create table table1(id int auto_increment primary key,...)

创建表格后添加:


代码如下:

alter table table1 add id int auto_increment primary key 自增字段,一定要设置为primary key.

许多时候希望table中数据的id不要从1开始,像qq, id从10000开始
代码如下:


代码如下:

alter table users AUTO_INCREMENT=10000;

而且该语句也适用于修改现有表的id上, 比如大批量删除数据后,想id从654321退回123456开始


代码如下:

alter table users AUTO_INCREMENT=123456;

但是经过实际测试, 单机的Mysql没有问题, Mysql Cluster下是无效的,可能在主键上的机制,还是有所不同,有时间研究一下

在Rails migration中的写法如下:


代码如下:

create_table :articles, :options => 'AUTO_INCREMENT = 1001' do |t|  
# xxx todo     
end

设置自增ID从N开始


代码如下:

CREATE TABLE TABLE_1 ( ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, // ID列为无符号整型,该列值不可以为空,并不可以重复,而且自增。 NAME VARCHAR(5) NOT NULL ) AUTO_INCREMENT = 100;(ID列从100开始自增)

如果想让自增ID从默认值开始只要


代码如下:

TRUNCATE TABLE table1

即可

(0)

相关推荐

  • MySql数据库自动递增值问题

    Create TABLE test ( id INT UNSIGNED NOT NULL PrimaRY KEY AUTO_INCREMENT, username VARCHAR(15) NOT NULL ) AUTO_INCREMENT = 100; 在数据库应用,我们经常要用到唯一编号,以标识记录.在MySQL中可通过数据列的AUTO_INCREMENT属性来自动生成.MySQL支持多种数据表,每种数据表的自增属性都有差异,这里将介绍各种数据表里的数据列自增属性. ISAM表 如果把一个NU

  • 设置MySQL自动增长从某个指定的数开始方法

    自增字段,一定要设置为primary key. 以指定从1000开始为例. 1 创建表的时候就设置: CREATE TABLE `Test` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `NAME` varchar(50) NOT NULL, `SEX` varchar(2) NOT NULL, PRIMARY KEY (`ID`) ) ENGINE=MEMORY AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 CHECKSU

  • mysql自增ID起始值修改方法

    在mysql中很多朋友都认为字段为AUTO_INCREMENT类型自增ID值是无法修改,其实这样理解是错误的,下面介绍mysql自增ID的起始值修改与设置方法.通常的设置自增字段的方法:创建表格时添加: 复制代码 代码如下: create table table1(id int auto_increment primary key,...) 创建表格后添加: 复制代码 代码如下: alter table table1 add id int auto_increment primary key 自

  • 详解mysql插入数据后返回自增ID的七种方法

    引言 mysql 和 oracle 插入的时候有一个很大的区别是: oracle 支持序列做 id: mysql 本身有一个列可以做自增长字段. mysql 在插入一条数据后,如何能获得到这个自增 id 的值呢? 一:使用 last_insert_id() SELECT LAST_INSERT_ID(); 1. 每次 mysql 的 query 操作在 mysql 服务器上可以理解为一次"原子"操作, 写操作常常需要锁表, 这里的锁表是 mysql 应用服务器锁表不是我们的应用程序锁表

  • MySQL表自增id溢出的故障复盘解决

    问题:MySQL某个表自增id溢出导致某业务block 背景: tokudb引擎的一个大表tb1,存放业务上的机审日志,每天有大量的写入, 并且由于历史原因,这张表是int signed 类型的,最大只能存 2147483647行记录 . 处理过程: 增加DBLE中间件代理,然后做range分区,将新数据写到新加的的一个分片上. 同时业务上修改连接将这个表tb1的连接方式改走DBLE. 但是业务上改完代码后,发现还有残余的部分insert into tb1的写请求被转发到了老的表上,且有些表被错

  • Java连接MySQL数据库增删改查的通用方法(推荐)

    运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个类多个方法,导致代码编写太过于繁琐,所以为了改变这样的繁琐,我将连接数据库的方法进行了一系列的封装,使用户传入一个对象值Object就可以得到想要的. 我在之前写过一篇普通的Java连接MySQL数据库,大家可以看看,以便对比参考之后就知道差距了 数据库--MySQL-->Java篇 接下来我给大家讲讲如何将这个不可复用,又多重复的连接代码,封装起来,非常

  • 关于MySQL自增ID的一些小问题总结

    下面这几个小问题都是基于 InnoDB 存储引擎的. 1. ID最大的记录删除后,新插入的记录ID是什么 例如当前表中有ID为1,2,3三条记录,把3删除,新插入记录的ID从哪儿开始? 答案: 从4开始. 实验 创建表 tb0,ID自增: create table tb0(id int unsigned auto_increment primary key); 插入3条记录: insert into tb0 values(null); 删除ID为3的记录: delete from tb0 whe

  • 关于mysql自增id,你需要知道的

    导读:在使用MySQL建表时,我们通常会创建一个自增字段(AUTO_INCREMENT),并以此字段作为主键.本篇文章将以问答的形式讲述关于自增id的一切. 注: 本文所讲的都是基于Innodb存储引擎. 1.MySQL为什么建议将自增列id设为主键? 如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引.如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引.如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID

  • VB.NET调用MySQL存储过程并获得返回值的方法

    本文实例讲述了VB.NET调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体实现方法如下: Dim myConnectionString As String = "Database=" & myDatabase & _ " ;Data Source=" & myHost & _ ";User Id=" & myUserId & ";Password=" &

  • Java调用MySQL存储过程并获得返回值的方法

    本文实例讲述了Java调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体如下: private void empsInDept(Connection myConnect, int deptId) throws SQLException { CallableStatement cStmt = myConnect.prepareCall("{CALL sp_emps_in_dept(?)}"); cStmt.setInt(1, deptId); cStmt.execute

  • Python简单调用MySQL存储过程并获得返回值的方法

    本文实例讲述了Python调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体实现方法如下: try: conn = MySQLdb.connect ( host = 'localhost', user = 'root', passwd = 'pass', db = 'prod', port = 3306 ) cursor1=conn.cursor() cursor1.execute("CALL error_test_proc()") cursor1.close() e

  • MySQL分表自增ID问题的解决方法

    当我们对MySQL进行分表操作后,将不能依赖MySQL的自动增量来产生唯一ID了,因为数据已经分散到多个表中.  应尽量避免使用自增IP来做为主键,为数据库分表操作带来极大的不便.  在postgreSQL.oracle.db2数据库中有一个特殊的特性---sequence. 任何时候数据库可以根据当前表中的记录数大小和步长来获取到该表下一条记录数.然而,MySQL是没有这种序列对象的.  可以通过下面的方法来实现sequence特性产生唯一ID:  1. 通过MySQL表生成ID  对于插入也

随机推荐