首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 獲取最後插入 ID 的最佳實踐:LAST_INSERT_ID() 詳解

     編輯:MySQL 資料庫相關知識

在主從表結構中,主表使用 auto_increment 主鍵作為從表外鍵。插入主表記錄後,如何高併發安全地獲取自動生成的 ID?傳統 SELECT MAX(id) FROM tablename 需在事務中加排他鎖,步驟繁瑣且併發性差。

解決方案:LAST_INSERT_ID()

核心優勢:線程安全,屬於具體資料庫連接(Session 級別)。

實驗驗證

  1. 連接 1 向表 A 插入一條記錄(含 auto_increment 欄位)
  2. 連接 2 向表 A 再插入一條記錄
  3. 結果:連接 1 執行 SELECT LAST_INSERT_ID() 與連接 2 執行結果 不同;而兩連接執行 SELECT MAX(id) 結果 相同

這與 SQL Server 中 SCOPE_IDENTITY()(當前會話)與 IDENT_CURRENT()(全域最大值)的區別完全一致。

重要注意事項

批量插入時,LAST_INSERT_ID() 僅返回第一條記錄的 ID。
範例:INSERT INTO tb(c1,c2) VALUES (v1,v2), (v3,v4)... → 返回第一組值對應的 ID。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved