首页 > 解决方案 > 获取多个插入行的 id

问题描述

我需要通过单个查询获取插入的新 ID 列表(这些是自动增量的,我正在制作一个

INSERT INTO xtable(value1,value2,value3,value4) VALUES
(val1,val2,val3,val4),
(val1,val2,val3,val4),
(val1,val2,val3,val4),
(val1,val2,val3,val4), 
(val1,val2,val3,val4)

因此,正如您在插入 5 行的单个查询中看到的那样,我怎样才能获得这些 ID?我不想在插入查询后进行选择以获取最新的 IDS 或范围,因为如果它变慢并且另一个功能也会进行插入查询,它可能会出错,有任何方法可以在同一个查询 INSERT 中返回插入的 ID行?谢谢!

标签: mysql

解决方案


MySQL 文档页面:https ://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html说:

对于多行插入,LAST_INSERT_ID() 和 mysql_insert_id() 实际上从插入的第一行返回 AUTO_INCREMENT 键。这使得多行插入能够在复制设置中的其他服务器上正确复制。

因此,如果您有第一个的 ID - 我希望按顺序为每条记录分配下一个更大的值,因为多行插入将在单个原子事务中完成。因此,如果您知道第一个 ID,您只需递增 id 以依次获取分配给每一行的值。例如,如果您有 4 行并且第一行的 ID 为 45,那么其余的将被分配 46、47、48。

然后,您可能还想参考此文档页面,该页面描述了更多内容并提供了有关如何使用 LAST_INSERT_ID() 的示例。 https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id


推荐阅读