【问题标题】:Codeigniter: Retrieve insert_ids using insert_batch()Codeigniter:使用 insert_batch() 检索 insert_ids
【发布时间】:2012-03-07 06:24:54
【问题描述】:

有没有办法从之前运行的 insert_batch() 方法中获取所有插入 ID(使用 $this->db->insert_id() )?

理想情况下,它会按照插入的顺序输出一个简单的 id 数组。

【问题讨论】:

  • 不适用于codeigniter,但它会帮助你一些。请通过stackoverflow.com/questions/1285231/…
  • 谢谢公爵,我猜我只是假设 insert_id 输出最后插入的行,而不是第一行。这是很好的信息,我将使用此方法而不是尝试解析为数组。

标签: php codeigniter activerecord


【解决方案1】:

创建一个触发器会起作用。

不确定它是否会影响大批量插入的性能

DELIMITER $$

CREATE
    TRIGGER `test`.`getids` AFTER INSERT
    ON `database_name`.`table_name`
    FOR EACH ROW BEGIN
        INSERT INTO last_inserted_ids (last_insertId) VALUES(LAST_INSERT_ID());

    END$$

DELIMITER ;

它会将所有 id 放入表中,因为您希望它们在数组中编写一个查询,该查询恰好在批处理后运行并从表 last_inserted_ids 中获取所有值,然后截断它,以便您始终拥有所需的批处理执行后的 ids。

希望这对您的情况有所帮助。

【讨论】:

  • 这是一个非常酷的概念,我将标记为已接受的答案,因为它可以满足我的要求,允许我解析为数组。但出于性能目的,以及我没有对自动递增做任何时髦的事情这一事实,我将接受 dukes 的评论。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-02-13
  • 2015-01-28
  • 2014-02-07
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
相关资源
最近更新 更多