mysql 批量插入 获取所有自增ID
Contents
背景
批量插入后,对刚插入的数据进行后续操作,需要获取所有插入的id,但执行sql只返回第一条id
思路
假设批量插入的数据的自增ID是连续的,则可以通过第一个自增ID获取所有自增ID
测试
理论上
批量插入的数据的自增ID是否是连续的,即插入过程中,单独插入其他数据,批量插入的自增ID是否连续
实践
- 生成批量插入10w条数据的sql
|
|
- navicat打开两个页面,一个是上面的sql,一个是一条单独插入的sql(这条sql的test_id,要大于上面sql里随机数的最大值,方便查看)
步骤
- 先点击执行上面的sql(应该会执行20多秒吧),中间随机点击单条sql
- 筛选单条sql中的test_id,可以发现开始几条都是小于批量的自增ID的
- 在批量执行快结束的时候,插入的单条sql的自增ID是大于批量的,并没有单条sql的自增ID在批量中间
- 所以批量插入的自增ID是连续的
- 假设成立,可以这种方式获取批量插入的所有自增ID