通常我可以在 MySQL 表中插入一行並取得 last_insert_id
。但現在,我想將許多行批量插入到表中並獲取 ID 數組。有人知道我該怎麼做?
有一些類似的問題,但不完全相同。我不想將新 ID 插入任何臨時表;我只想取回 ID 陣列。
我可以從批次插入中檢索lastInsertId嗎?
帶有last_insert_id()的Mysql多行插入選擇語句
P粉5614384072024-04-07 09:07:17
我認為可以做到的唯一方法是為插入的每組行儲存唯一識別碼(guid) 然後選擇行 ID。 例如:
INSERT INTO t1 (SELECT col1,col2,col3,'3aee88e2-a981-1027-a396-84f02afe7c70' FROM a_very_large_table); COMMIT; SELECT id FROM t1 WHERE guid='3aee88e2-a981-1027-a396-84f02afe7c70';
您也可以使用 uuid()
在資料庫中產生 guid
P粉7757237222024-04-07 00:12:23
舊線程,但只是研究了這個,所以這裡是:如果您在最新版本的MySQL 上使用InnoDB,您可以使用LAST_INSERT_ID()
和ROW_COUNT()
獲取ID 清單。
InnoDB 保證在進行批次插入時自動遞增的順序號,前提是 innodb_autoinc_lock_mode
設定為 0(傳統)或 1(連續)。
因此,您可以從 LAST_INSERT_ID()
取得第一個 ID,並透過新增 ROW_COUNT()-1
取得最後 ID。