如何最有效地获取多个 last_insert_id

Posted

技术标签:

【中文标题】如何最有效地获取多个 last_insert_id【英文标题】:How to best efficiently get multiple last_insert_ids 【发布时间】:2014-02-08 04:07:14 【问题描述】:

我有一个这样的 SQL INSERT 语句:

INSERT INTO my_tickets( tk_type, tk_qty) VALUES('typeValue1','qtyValue1'),('typeValue2', 'qtyvalue2'),('typeValue3', 'qtyValue3'); SET @lastId = LAST_INSERT_ID();

我意识到LAST_INSERT_ID() 只会获得从列表中插入的第一个AUTO_INCREMENT id。会有更多的清单。有没有一种更有效的方法来获取每个 last_insert_ids 而无需重复(使用 php 循环结构)INSERT 查询,如下所示:

INSERT INTO my_tickets(tk_type, tk_qty) VALUES('typeValue1', 'qtyValue1'); 
SET @lastId = LAST_INSERT_ID();

INSERT INTO my_tickets(tk_type, tk_qty) VALUES('typeValue2', 'qtyValue2'); 
SET @lastId = LAST_INSERT_ID();

INSERT INTO my_tickets(tk_type, tk_qty) VALUES('typeValue3', 'qtyValue3'); 
SET @lastId = LAST_INSERT_ID();

我想根据这些个人last_insert_ids 在另一个表上创建其他INSERT 语句。

【问题讨论】:

【参考方案1】:

没有办法做到这一点。 last_insert_id() 仅报告插入的 LAST 元组。它绝对无法报告由多值插入生成的所有 ID。如果您需要多个 last id,则必须运行多个独立的 SINGLE 值集插入。

【讨论】:

如果表中没有唯一约束(在查询中传递)

以上是关于如何最有效地获取多个 last_insert_id的主要内容,如果未能解决你的问题,请参考以下文章

跨多个单元格最有效地搜索二维数字数组

如何有效地将属性更改为 Android Studio 中的多个视图/按钮?

针对多个正则表达式有效地查询一个字符串

如何以最有效的方式创建多个 camera2 预览?

如何从 LAST_INSERT_ID(`my_column`+1) 获取表达式的值?

如何在多条记录插入中获取最后插入的 id?