如何获取最新的自动递增 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 中的另一个表中?

如何生成每年重置的自动递增 ID 号

如何使用单个查询在 SQL 中获取最后一个增量 id

如何使用 JDBC 和 Microsoft Access 获取自动递增的密钥?

如何从 mysql 表中获取自动递增字段名称或主键字段名称?

使用 PDO 插入时获取自动递增行 ID [重复]