通常我可以在 MySQL 表中插入一行並取得 last_insert_id 。但現在,我想將許多行批量插入到表中並獲取 ID 數組。有人知道我該怎麼做?
last_insert_id
有一些類似的問題,但不完全相同。我不想將新 ID 插入任何臨時表;我只想取回 ID 陣列。
我可以從批次插入中檢索lastInsertId嗎?
帶有last_insert_id()的Mysql多行插入選擇語句
我認為可以做到的唯一方法是為插入的每組行儲存唯一識別碼(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
uuid()
舊線程,但只是研究了這個,所以這裡是:如果您在最新版本的MySQL 上使用InnoDB,您可以使用LAST_INSERT_ID() 和ROW_COUNT() 獲取ID 清單。
LAST_INSERT_ID()
ROW_COUNT()
InnoDB 保證在進行批次插入時自動遞增的順序號,前提是 innodb_autoinc_lock_mode 設定為 0(傳統)或 1(連續)。 因此,您可以從 LAST_INSERT_ID() 取得第一個 ID,並透過新增 ROW_COUNT()-1 取得最後 ID。
innodb_autoinc_lock_mode
ROW_COUNT()-1
我認為可以做到的唯一方法是為插入的每組行儲存唯一識別碼(guid) 然後選擇行 ID。 例如:
您也可以使用
uuid()
在資料庫中產生 guid舊線程,但只是研究了這個,所以這裡是:如果您在最新版本的MySQL 上使用InnoDB,您可以使用
LAST_INSERT_ID()
和ROW_COUNT()
獲取ID 清單。InnoDB 保證在進行批次插入時自動遞增的順序號,前提是
innodb_autoinc_lock_mode
設定為 0(傳統)或 1(連續)。 因此,您可以從LAST_INSERT_ID()
取得第一個 ID,並透過新增ROW_COUNT()-1
取得最後 ID。