【问题标题】:How to best efficiently get multiple last_insert_ids如何最有效地获取多个 last_insert_id
【发布时间】: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 语句。

【问题讨论】:

    标签: mysql sql last-insert-id


    【解决方案1】:

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

    【讨论】:

    • 如果表中没有唯一约束(在查询中传递)
    猜你喜欢
    • 2015-07-01
    • 2011-12-09
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    相关资源
    最近更新 更多