如何从特定点开始自动递增?

Posted

技术标签:

【中文标题】如何从特定点开始自动递增?【英文标题】:How do I start auto increment from a specific point? 【发布时间】:2011-03-29 01:37:42 【问题描述】:
CREATE TABLE `batchinfo` (
  `rowid` int(11) NOT NULL AUTO_INCREMENT,
  `datapath` mediumtext,
  `analysistime` varchar(50) DEFAULT NULL,
  `reporttime` varchar(50) DEFAULT NULL,
  `lastcalib` varchar(50) DEFAULT NULL,
  `analystname` varchar(150) DEFAULT NULL,
  `reportname` varchar(150) DEFAULT NULL,
  `batchstate` varchar(150) DEFAULT NULL,
  `instrument` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`rowid`),
  UNIQUE KEY `rowid_UNIQUE` (`rowid`)
) ENGINE=InnoDB AUTO_INCREMENT=15034 DEFAULT CHARSET=latin1

我想从 20000 年开始自动递增。

我该怎么做?我可以编辑表格一些如何从 20000 开始递增吗?

【问题讨论】:

【参考方案1】:

查看查询的最后一行:

AUTO_INCREMENT=15034

改成:

AUTO_INCREMENT=20000

就这么简单! :)

CREATE TABLE `batchinfo` (
  `rowid` int(11) NOT NULL AUTO_INCREMENT,
  `datapath` mediumtext,
  `analysistime` varchar(50) DEFAULT NULL,
  `reporttime` varchar(50) DEFAULT NULL,
  `lastcalib` varchar(50) DEFAULT NULL,
  `analystname` varchar(150) DEFAULT NULL,
  `reportname` varchar(150) DEFAULT NULL,
  `batchstate` varchar(150) DEFAULT NULL,
  `instrument` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`rowid`),
  UNIQUE KEY `rowid_UNIQUE` (`rowid`)
) ENGINE=InnoDB AUTO_INCREMENT=20000 DEFAULT CHARSET=latin1;

INSERT INTO batchinfo (datapath) values('test');
SELECT * FROM batchinfo;

【讨论】:

【参考方案2】:

我不知道如何从CREATE 声明中做到这一点,但之后你可以这样做:

ALTER TABLE `batchinfo` AUTO_INCREMENT = 20000;

【讨论】:

【参考方案3】:
ALTER TABLE batchinfo AUTO_INCREMENT = 20000;

另见Autoincrement

【讨论】:

mysql重启后,auto_increment值发生变化:(

以上是关于如何从特定点开始自动递增?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Laravel Migration 中的 ID 自动递增从某个数字开始

自动递增值并使用休眠设置从 1 开始

从零开始自动递增 PK - EF Core 代码优先

如何让mysql的自动递增的字段重新从1开始

如何让mysql的自动递增的字段重新从1开始

如何从某个数字(如 2456)启动 Django 模型自动递增键?