1、没谷歌到php可以用的直接方法,不过可以获取批量插入的第一个自增id
2、假设批量插入的数据的自增ID是连续的,则可以通过第一个自增ID获取所有自增ID
3、测试批量插入的数据的自增ID是否是连续的,即插入过程中,单独插入其他数据,批量插入的自增ID是否连续
4、生成批量插入10w条数据的sql
$s=<<<SQL
INSERT INTO `XXXX` (
`test_id`,
`operate_id`,
`create_time`
)
VALUES
%s;
SQL;
$a=array();
for ($i=0;$i<100000;$i++){
$a[]="('".rand(10000000,99999999)."', 'system', NOW())";
}
print_r(sprintf($s,implode(',',$a)));
exit(1);
5、navicat打开两个页面,一个是上面的sql,一个是一条单独插入的sql(这条sql的test_id,要大于上面sql里随机数的最大值,方便查看)
先点击执行上面的sql(应该会执行20多秒吧),中间随机点击单条sql
筛选单条sql中的test_id,可以发现开始几条都是小于批量的自增ID的,在批量执行快结束的时候,插入的单条sql的自增ID是大于批量的,并没有单条sql的自增ID在批量中间,所以批量插入的自增ID是连续的
6、所以可以使用2中的方式获取批量插入的所有自增ID
网友评论