從MySQL 中的批次插入中取得自動遞增ID
資料庫管理中的常見任務之一是將多行插入到表中,並且檢索為每行產生的自動增量ID。雖然使用 LAST_INSERT_ID() 函數檢索最後插入的 ID 很簡單,但批次插入在取得所有產生的 ID 的陣列方面提出了挑戰。
傳統方法:透過臨時表插入
以前,一種常見的技術涉及將新 ID 插入臨時表並使用子查詢來找回它們。然而,這種方法需要額外的步驟並引入效能開銷。
在InnoDB 中使用LAST_INSERT_ID() 和ROW_COUNT()
MySQL 的最新版本,特別是那些使用InnoDB 的版本儲存引擎,提供了一種檢索插入ID 的替代方法。此方法利用 LAST_INSERT_ID() 函數和 ROW_COUNT() 來提取已指派的自動增量值的範圍。
流程:
示例:
INSERT INTO `my_table` (`name`, `email`) VALUES ('John Doe', 'john.doe@example.com'), ('Jane Doe', 'jane.doe@example.com'), ('Peter Jones', 'peter.jones@example.com'); SET @first_id = LAST_INSERT_ID(); SET @last_id = @first_id + ROW_COUNT() - 1; SELECT * FROM `my_table` WHERE `id` BETWEEN @first_id AND @last_id;
好處:
以上是MySQL批次插入後如何有效率地擷取自增ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!