首頁 >資料庫 >mysql教程 >LAST_INSERT_ID() 在 MySQL 的多行 INSERT 語句中表現如何?

LAST_INSERT_ID() 在 MySQL 的多行 INSERT 語句中表現如何?

Linda Hamilton
Linda Hamilton原創
2024-11-14 20:14:02805瀏覽

How Does LAST_INSERT_ID() Behave in Multi-Row INSERT Statements in MySQL?

在MySQL 中使用LAST_INSERT_ID() 傳回多行INSERT 語句中的最後一個插入ID

在MySQL 中執行多條記錄MySQL時,了解LAST_INSERT_ID() 函數的行為變得至關重要。與提供插入行 ID 的單行插入不同,LAST_INSERT_ID() 對於多行 INSERT 語句的行為有所不同。

例如,考慮以下查詢:

INSERT INTO people (name, age)
VALUES ('William', 25), ('Bart', 15), ('Mary', 12);

執行此語句後,人們可能會期望 LAST_INSERT_ID() 函數傳回最後插入的行的 ID (3)。然而,LAST_INSERT_ID() 的行為與此期望不同。

LAST_INSERT_ID() 傳回第一個插入ID

在多個記錄INSERT 語句的上下文中,LAST_INSERT_ID( ) 只傳回為第一個插入行所產生的ID。此行為明確記錄在 MySQL 的文檔中:

Important
If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.

此設計決策確保可以在另一台伺服器上輕鬆地複製相同的 INSERT 語句,而不會出現任何問題。透過使用第一個插入行的 ID,重現預期的行為變得簡單。

對程式碼設計的影響

在設計依賴於用於多行插入的 LAST_INSERT_ID() 函數。在這種情況下,開發人員應避免依賴 LAST_INSERT_ID() 來確定插入行的特定 ID。應考慮在多行插入中追蹤或存取行 ID 的替代方法。

以上是LAST_INSERT_ID() 在 MySQL 的多行 INSERT 語句中表現如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn