在 MySQL 中批次插入傳回的 ID
將多行插入 MySQL 表是一項常見任務。但是,如果您需要在批次插入後檢索新產生的 ID,標準的 LAST_INSERT_ID() 函數就不夠了。
InnoDB 解決方案
如果您的表使用InnoDB 儲存引擎(大多數工作負載的建議設定),MySQL 提供了使用LAST_INSERT_ID() 和ROW_COUNT()函數。它的工作原理如下:
在 InnoDB 中,當 innodb_autoinc_lock_mode 設定為 0(傳統)或 1(連續)時,使用自動增量進行批次插入可以保證順序數字。這表示您可以使用 LAST_INSERT_ID() 檢索第一個 ID,並透過新增 ROW_COUNT() - 1 檢索最後一個 ID。
例如:
INSERT INTO example_table (name) VALUES ('John'), ('Mary'), ('Bob'); -- Get first ID SELECT LAST_INSERT_ID() AS first_id; -- Get row count SELECT ROW_COUNT() AS row_count; -- Get last ID SELECT LAST_INSERT_ID() + ROW_COUNT() - 1 AS last_id;
以上是如何在 MySQL 中批次插入後檢索自動產生的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!