搜尋

首頁  >  問答  >  主體

如何在MySQL表中插入多行並傳回新的ID?

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

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

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

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

P粉373990857P粉373990857299 天前528

全部回覆(2)我來回復

  • P粉561438407

    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

    回覆
    0
  • P粉775723722

    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。

    回覆
    0
  • 取消回覆