8
A
回答
12
您的澄清評論說,如果另一個併發INSERT發生,您有興趣確保LAST_INSERT_ID()不會給出錯誤的結果。請放心,無論其他併發活動如何,使用LAST_INSERT_ID()都是安全的。 LAST_INSERT_ID()僅返回當前會話期間生成的最新ID。
你可以自己嘗試一下:
- 打開兩個shell窗口,運行mysql客戶 每個並連接到數據庫 。
- Shell 1:用 AUTO_INCREMENT鍵將數據插入到表格中。
- Shell 1:SELECT LAST_INSERT_ID(), 查看結果。
- Shell 2:INSERT到同一個表中。
- 殼2:SELECT LAST_INSERT_ID(), 看到結果從殼1
- 外殼1不同:再次選擇LAST_INSERT_ID() ,見前面 結果的重複。
如果你考慮一下,這是唯一有意義的方法。所有支持自動遞增密鑰機制的數據庫都必須採用這種方式。如果結果取決於與其他客戶端的爭用情況可能同時進行INSERT,那麼在當前會話中沒有可靠的方法來獲取最後插入的ID值。
+0
謝謝!正是我想要的。 – MPX 2008-10-03 00:46:29
6
MySQL的LAST_INSERT_ID()
0
MySQL的文檔描述的功能:LAST_INSERT_ID()
0
[從table_name的選擇MAX(primary_key_column_name) 唉唉不nessecarily。我不是一個MySQL的人,但有特定的方法來獲取最後完成的動作的最後一個插入的id,比這更強大一點。如果在寫入表格和查詢之間發生了插入操作,該怎麼辦?我知道,因爲它刺痛了我很多月前(所以是的,它確實發生)。 如果所有的錯誤都沒有閱讀手冊:http://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
相關問題
- 1. 簡單的html php插入mysql問題
- 2. 簡單的SQL主鍵問題
- 3. 非常簡單的關於淡入和淡出的AS問題
- 4. 關於加入的MySQL簡單查詢
- 5. 一個簡單的關於問題的ActionListener與「ENTER」鍵
- 6. 簡單的html dom和mysql插入
- 7. 關於LINQ to SQL的簡單問題
- 8. 簡單的問題關於IF語句
- 9. 關於wxPython的一個簡單問題
- 10. 關於C++的簡單一般問題
- 11. 關於Makefile的簡單問題
- 12. 關於CGRectIntersectsRect的簡單問題
- 13. 關於scala元組的簡單問題
- 14. 關於java同步的簡單問題
- 15. 關於ActiveRecord協會的簡單問題
- 16. 簡單IRB關於計數的問題
- 17. 一個簡單的問題關於iAd
- 18. 關於簡單授權的問題
- 19. 關於LINQ的簡單問題
- 20. 關於Memset的簡單問題C
- 21. 關於java的簡單問題SimpleDateFormat
- 22. 關於聚合物的簡單問題
- 23. 關於MVC的簡單問題
- 24. 關於指針的簡單問題
- 25. 關於mySQL的非常簡單的查詢(初學者問題)
- 26. 簡單的問題關於mySQL的速度
- 27. 關於Facebook評論插件的一個簡單問題
- 28. MySql:創建表和外鍵的簡單問題
- 29. 簡單的問題關於簡單的數組Objective-C
- 30. 簡單的PHP和MySQL問題 - COUNT
說明: 代碼已插入然後一個last_insert_id。這些語句中的兩個在同一時間幾乎執行和EXEC命令變成 插入#1 插入#2 LAST_INSERT_ID#1完成和插入#2 LAST_INSERT_ID#2完成之後返回的ID和插入#返回ID 2 這可能發生嗎? – MPX 2008-10-03 00:30:29