如何在MySQL表中插入多行並傳回新的ID?
P粉373990857
P粉373990857 2024-04-06 10:03:44
0
2
384

通常我可以在 MySQL 表中插入一行並取得 last_insert_id 。但現在,我想將許多行批量插入到表中並獲取 ID 數組。有人知道我該怎麼做?

有一些類似的問題,但不完全相同。我不想將新 ID 插入任何臨時表;我只想取回 ID 陣列。

我可以從批次插入中檢索lastInsertId嗎?

帶有last_insert_id()的Mysql多行插入選擇語句

P粉373990857
P粉373990857

全部回覆(2)
P粉561438407

我認為可以做到的唯一方法是為插入的每組行儲存唯一識別碼(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粉775723722

舊線程,但只是研究了這個,所以這裡是:如果您在最新版本的MySQL 上使用InnoDB,您可以使用LAST_INSERT_ID()ROW_COUNT() 獲取ID 清單。

InnoDB 保證在進行批次插入時自動遞增的順序號,前提是 innodb_autoinc_lock_mode 設定為 0(傳統)或 1(連續)。 因此,您可以從 LAST_INSERT_ID() 取得第一個 ID,並透過新增 ROW_COUNT()-1 取得最後 ID。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!