我使用的是MYSQL,我有一个名为Customer的表,并有一个主键customer_id,它具有INT数据类型,并且是自动递增的(工作台列规范中的“AI”)。
这是工作台生成的DDL代码:
ALTER TABLE infrastructure.mfg
CHANGE COLUMN
mfg_id mfg_id INT(10) UNSIGNED
NOT NULL AUTO_INCREMENT 我的意图:
例如:
我该怎么做?我是否使用这些函数,如果是,如何使用?
LAST_INSERT_ID()
mysql_insert_id()如果这不是一个选项,我可以检查"G“而不是"AI”吗?
如果我检查"G“,生成的MySQL脚本是:
ALTER TABLE infrastructure.mfg
CHANGE COLUMN mfg_id
mfg_id INT(10) GENERATED ALWAYS AS () VIRTUAL 在哪里有关于如何使用这个的信息?
发布于 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属性的列,您可以这样做:
ALTER TABLE infrastructure.mfg
CHANGE COLUMN mfg_id mfg_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
AUTO_INCREMENT = 100 ;进一步的信息可在文件的有关页中找到:
特别是在上面的最后一篇文章中,它解释了将增量从1更改为100有哪些选项。这并不是微不足道的:
InnoDB增加语句检索的值,并将其分配给表的列和自动增量计数器。默认情况下,值递增1。This默认值可以被
auto_increment_increment<#>configuration设置覆盖。如果表为空,InnoDB将使用值1。此默认设置可以被auto_increment_offset配置设置覆盖。
dbfiddle.uk中的测试2
注意,这两个变量affect MySQL服务器中的所有表。
https://dba.stackexchange.com/questions/199075
复制相似问题