首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中获得大容量插入插入id

问如何在mysql中获得大容量插入插入id
EN

Stack Overflow用户
提问于 2022-06-26 15:07:24
回答 1查看 244关注 0票数 -1

使用此查询在mysql表中插入多行后,我将尝试插入

代码语言:javascript
复制
insert into sometable (id , candidateid , createdby)
    values ('61','3175','1425'),('60','3175','1425'),('42','3175','1425'),('61','3176','1425'),('60','3176','1425'),('42','3176','1425') OUTPUT INSERTED.id

但是我得到了sql语法错误。

代码语言:javascript
复制
code: 'ER_PARSE_ERROR',
  errno: 1064,
  sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTPUT INSERTED.id' at line 2",
  sqlState: '42000',

如何获得插入id?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-26 15:27:54

OUTPUT INSERTED语法是一个事件。MySQL不支持这种语法。

在您的示例中,您已经显式地设置了id值,因此不需要返回它们。只需从你自己的价值观中得到它们,显然你在插入之前就已经知道了。

您可能依赖于在插入过程中生成的自动递增id。

若要获取最近插入的行的自动增量id,请在插入后的单独查询中使用ID()函数。

LAST_INSERT_ID()只返回插入期间生成的第一个id。如果您执行多行插入,则由您来推断后续的id,它们通常是连续值。例如,MySQL JDBC驱动程序依赖于它们是连续的值,因此它可以在批处理插入之后返回id的集合。

但是,如果您更改了以“交错”方式分配auto值的innodb_autoinc_lock_mode=2,则不能保证它们是连续值,因此并发插入可能会从多行插入生成的集合之间的序列中获取一个值。这不是默认模式,所以您应该故意设置它。

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

https://stackoverflow.com/questions/72762720

复制
相关文章

相似问题

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