如何获取最新的自动递增 id 数组?
Posted
技术标签:
【中文标题】如何获取最新的自动递增 id 数组?【英文标题】:how to get array of latest auto incremented id's? 【发布时间】:2014-05-14 11:54:25 【问题描述】:一个查询插入多行:
$My query = "INSERT INTO exp_channel_titles(channel_id,author_id,ip_address) VALUES(11,1,'203.109.119.2'),(11,1,'203.109.119.2'),(11,1,'203.109.119.2')";
我想要什么:
自动递增的 id 数组。
我使用SELECT LAST_INSERT_ID()
得到了什么:
我只得到一个 id。我应该怎么做才能得到最后插入字段的所有自动递增值的数组。
P.S : 我不能触发多个插入查询。
【问题讨论】:
【参考方案1】:如果您在最新版本的 mysql 上使用 InnoDB,则可以使用 LAST_INSERT_ID() 和 ROW_COUNT() 获取 ID 列表。
InnoDB 在进行批量插入时保证 AUTO INCREMENT 的序列号,前提是 innodb_autoinc_lock_mode 设置为 0(传统)或 1(连续)。因此,您可以从 LAST_INSERT_ID() 获得第一个 ID,并通过添加 ROW_COUNT()-1 获得最后一个。
【讨论】:
+1 for innodb_autoinc_lock_mode,这是我要记住的新模式【参考方案2】:这将获取按 ID 递减排序的最后 X 条记录。如果您的 ID 是自动递增的,那么这些将是最新插入的值。
SELECT * FROM exp_channel_titles
ORDER BY id DESC
LIMIT X
【讨论】:
以上是关于如何获取最新的自动递增 id 数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何获取最后插入的自动递增 id 并将其插入 laravel 中的另一个表中?
如何使用 JDBC 和 Microsoft Access 获取自动递增的密钥?