[英]Mysql Insert … select, obtain last insert ID
我在 php 中有这个查询。 这是从 table2 复制的插入 select,但我需要获取新创建的行的 ID 并将它们存储到数组中。 这是我的代码:
$sql = "INSERT INTO table1 SELECT distinct * from table2";
$db->query($sql);
我可以从 table2 上的 select 开始恢复流程并进行所有单次插入,但它会减慢大表上的脚本。 想法?
您可以锁定表,插入行,并获取最后插入的项目的ID,然后解锁; 这样您就知道 ID 将是连续的,因为没有其他并发用户可以更改它们。 不过,锁定和解锁是您要谨慎使用的东西。
另一种方法是使用表中的一个列 - 一个“更新的”日期时间列或一个插入 ID 列(为此,您输入的值在所有行中都相同。)
这样,您可以执行后续的 SELECT 从数据库中返回匹配更新时间或您选择的插入 ID 的 ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.