如何在MYSQL中向自动标识列插入值

如何在MYSQL中向自动标识列插入值,mysql,auto-increment,mysql-workbench,Mysql,Auto Increment,Mysql Workbench,我想在mysql innodb表Auto_Increment列中插入值 我正在将一些数据从旧表加载到具有标识的新表,并且需要保留旧表中的现有值,因此我需要保留现有的Id值,但保留列Auto_Increment用于新值 在MS T-SQL中,我将使用SET SET IDENTITY\u insert MyTable ON启动我的insert查询脚本,并使用SET SET IDENTITY\u insert MyTable OFF结束查询 如何在MySQL中执行相同的操作?只需像往常一样执行: IN

我想在mysql innodb表
Auto_Increment
列中插入值

我正在将一些数据从旧表加载到具有标识的新表,并且需要保留旧表中的现有值,因此我需要保留现有的
Id
值,但保留列
Auto_Increment
用于新值

在MS T-SQL中,我将使用
SET SET IDENTITY\u insert MyTable ON
启动我的
insert
查询脚本,并使用
SET SET IDENTITY\u insert MyTable OFF
结束查询

如何在MySQL中执行相同的操作?

只需像往常一样执行:

INSERT INTO my_table(auto_inc_field, other_field) VALUES(8547, 'some value');
如果这些值来自另一个表,则可以使用:

INSERT INTO my_table(auto_inc_field, other_field)
SELECT auto_inc_field, other_field FROM other_table;

为什么?MySQL自动提供的值是否不合适?如果需要插入该列,为什么该列是自动标识?我想将其他表中的一些数据加载到具有标识的新表中,所以我想使用旧表中的现有值。这是加载样本数据或将数据从一个数据库移动到另一个数据库时非常常见的需要。我真的不明白为什么这被标记为“不是问题”。同意前面的2条评论。它们是nieve,显然不是基于迁移真实数据或构建开发测试(必须在具有相同数据的暂存和生产上运行)的经验。如果导入数据,则会出现一个全新的id值,该值将在auto_inc_字段中的整数为0或NULL时生成。“违反外键约束xxx”。这个答案应该被否决,而不是被质疑……如果有人像我一样偶然发现这个问题,您已经插入了ID为的行。您可以使用“ALTER TABLE test auto_INCREMENT=10”手动设置auto_inc_字段,其中10是插入行的下一个值。使用PostgreSQL,您同样必须重置auto_INCREMENT字段。@MartinBlore在4年后更新了对此的答案。根据5.7版
的文档,当您在自动增量列中插入任何其他值时,该列将设置为该值,并重置顺序,以便下一个自动生成的值从最大列值开始按顺序排列。