在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中文網其他相關文章!