檢查質疑第一:
Inserting an automatically generated index from a table into another table
我得到了這個功能「LAST_INSERT_ID()」做必要的
的問題是:我使用的是在我php腳本,如果某些用戶在「table1」中插入數據,並且在將「id」插入到「table2」之前,另一個用戶將數據插入到「table1」中,那麼該函數將爲第一個用戶檢索哪個「id」他的ID或第二個用戶的「最後一個」的ID?
我想檢索用戶自己「第一個用戶」插入的「id」,所以如果它沒有達到那個怎麼做?LAST_INSERT_ID()它是如何工作在多用戶環境
4
A
回答
25
LAST_INSERT_ID()爲您提供執行它的連接上的最後一個自動生成的標識,它不會返回MySQL服務器全局生成的最後一個插入標識。
-1
永遠不要使用lastInsertId()和PostgreSQL序列,特別是當你的應用程序的插入/更新負載很高時。 PostgreSQL序列是非事務性的(一種自然的設計特徵,以避免獨佔鎖定,否則會產生不可接受的性能)。這意味着任何增加相同序列的併發事務都會使由lastInsertId()返回的值相對於事務的最後一個插入無效。例如:
Transaction 1 inserts with nextval('some_seq') yielding 100;
Concurrent transaction 2 inserts with nextval('some_seq') yielding 101;
Transaction 1 calls lastInsertId(), expecting 100, BUT GETS 101.
這個PDO方法是PostgreSQL的braindead,總是使用INSERT ... RETURNING來代替。問候。
+0
這是如何回答這個問題的?問題是關於MySQL函數['LAST_INSERT_ID()'](https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id),它顯然是標記的[tag:mysql]而不是'postgresql'。 – axiac 2017-09-25 16:37:37
相關問題
- 1. 多用戶多環境
- 2. Hibernate多用戶環境
- 3. 處理多用戶環境
- 4. HttpContext.Current如何在多線程環境中工作?
- 5. MongoDB工作環境
- 6. 路徑環境變量如何工作?
- 7. Android環境中的問題。它是如何工作的,爲什麼?
- 8. SQL查詢使用多個插件和多LAST_INSERT_ID()的工作不
- 9. 如何在多個用戶之間同步開發環境?
- 10. 如何在多用戶環境中運行進程
- 11. 如何在多用戶環境中鎖定文件?
- 12. Javascript'onclick'在windows環境下失敗,但在linux環境下工作
- 13. Jmeter不能在其他環境中工作,儘管它在本地工作
- 14. 在多環境
- 15. Solr在多租戶環境中
- 16. 。它是如何工作的?
- 17. CSS - 它是如何工作
- 18. 如何在工作組環境中爲MS SQL Server創建Windows服務帳戶?
- 19. 如何實現基於多用戶的cdh hadoop環境?
- 20. 如何處理多用戶環境中的表單編輯?
- 21. 討論:在Scrum環境中工作TDD
- 22. 讓Hoptoad在分段環境中工作
- 23. 工作與Excel在64位環境
- 24. Cron Job在Linux環境下不工作
- 25. 在Eclipse中Irrlicht,環境不工作
- 26. HttpRuntime.Cache在Load Cluster環境中工作嗎?
- 27. 在多層環境
- 28. 在多種環境
- 29. strpos在C-它是如何工作的
- 30. Elastic Beanstalk環境的名稱是否可用作環境變量?
此外,它是(很)好習慣查詢後立即調用它。這樣你就不會錯。如果您在這方面遇到問題,您可能需要重新考慮您的代碼。 – tacone 2011-04-29 18:22:21
注意:每個MySQL連接都屬於一個用戶,因此存在1對1的關係。在這種情況下,'lastInsertId'將始終返回用戶的最後一個自動生成的ID。但對於**共享MySQL連接**,您必須使用** transaction **才能獲得正確的'lastInsertId',因爲共享連接具有1對N的關係。 – Rakesh 2017-11-27 19:43:40