首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改AUTO_INCREMENT列的初始值

修改AUTO_INCREMENT列的初始值
EN

Database Administration用户
提问于 2018-02-28 19:48:26
回答 1查看 2.8K关注 0票数 1

我使用的是MYSQL,我有一个名为Customer的表,并有一个主键customer_id,它具有INT数据类型,并且是自动递增的(工作台列规范中的“AI”)。

这是工作台生成的DDL代码:

代码语言:javascript
复制
ALTER TABLE infrastructure.mfg 
CHANGE COLUMN
 mfg_id mfg_id INT(10) UNSIGNED 
NOT NULL AUTO_INCREMENT 

我的意图:

  • 我想从"1000“开始编号,然后自动增加100。
  • 我只想要这张表的起始号

例如:

  • 1= 1000
  • 第二次= 1100
  • 第三次= 1200
  • 第4= 1300

我该怎么做?我是否使用这些函数,如果是,如何使用?

代码语言:javascript
复制
LAST_INSERT_ID()
mysql_insert_id()

如果这不是一个选项,我可以检查"G“而不是"AI”吗?

如果我检查"G“,生成的MySQL脚本是:

代码语言:javascript
复制
ALTER TABLE infrastructure.mfg 

CHANGE COLUMN mfg_id
 mfg_id INT(10) GENERATED ALWAYS AS () VIRTUAL 

在哪里有关于如何使用这个的信息?

EN

回答 1

Database Administration用户

发布于 2018-02-28 20:05:16

MySQL CREATE TABLE文档几乎解释了AUTO_INCREMENT列的所有内容:

创建表tbl_name (create_definition,.) --不相关的东西省略了column_definition: data_type唯一的] --不相关的东西省略了table_option: AUTO_INCREMENT值AVG_ROW_LENGTH值--很多东西省略了

有两个AUTO_INCREMENT设置,一个列属性和一个表选项,可以从默认值(1)中更改自动递增列的初始值:

Column数据类型和属性

  • AUTO_INCREMENT整数列或浮点列可以具有附加属性AUTO_INCREMENT.将NULL (推荐)或0的值插入索引的AUTO_INCREMENT列时,该列将设置为下一个序列值。Typically --这是 value+1,其中值是表中当前列的最大值。AUTO_INCREMENT sequences以1开头。.

Table选项

  • AUTO_INCREMENT表的初始AUTO_INCREMENT值。..。

因此,要添加一个具有从100开始的AUTO_INCREMENT属性的列,您可以这样做:

代码语言:javascript
复制
ALTER TABLE infrastructure.mfg 
    CHANGE COLUMN mfg_id mfg_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    AUTO_INCREMENT = 100 ;

dbfiddle.uk测试

进一步的信息可在文件的有关页中找到:

特别是在上面的最后一篇文章中,它解释了将增量从1更改为100有哪些选项。这并不是微不足道的:

InnoDB增加语句检索的值,并将其分配给表的列和自动增量计数器。默认情况下,值递增1。This默认值可以被auto_increment_increment <#>configuration设置覆盖。如果表为空,InnoDB将使用值1。此默认设置可以被auto_increment_offset配置设置覆盖。

dbfiddle.uk中的测试2

注意,这两个变量affect MySQL服务器中的所有表

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/199075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档