84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
通常我可以在 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。