2012-03-07 16 views
2

是否有辦法從先前運行的insert_batch()方法中獲取所有插入ID(使用$ this-> db-> insert_id())?Codeigniter:使用insert_batch檢索insert_ids()

理想情況下,它會按照它們插入的順序吐出一個簡單的ID數組。

+1

不適用於codeigniter,但它會幫助你一些金額..請通過http://stackoverflow.com/questions/1285231/php-mysql-retrieving-the-last-inserted-ids-for-multiple-rows – 2012-03-07 06:43:05

+0

謝謝你,猜我只是假設insert_id輸出最後插入的行,而不是第一個。這是很好的信息,我將使用此方法而不是嘗試解析數組。 – aowie1 2012-03-07 19:00:10

回答

4

創建觸發器將工作。

不知道,如果其戈納在巨大的批量插入

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中的所有值,然後截斷它,以便在批處理執行後始終擁有所需的id。

希望這可以幫助你的情況。

+0

這是一個非常酷的概念,我將標記爲已接受的答案,因爲它符合我的要求,允許我解析爲數組。但爲了表現的目的,以及我沒有對自動遞增做任何事情的事實,我會與公爵一起評論。謝謝! – aowie1 2012-03-07 18:58:47