33
A
回答
34
在一個高度併發的應用程序中,它可能(理論上)發生在第一個選擇中讀取的數據在其他選擇被執行之前被修改。
如果這是您的應用程序中可能發生的情況,您應該使用事務來包裝您的選擇。確保你選擇了正確的isolation level,但不是所有的事務類型都能保證一致的讀取。
更新: 您也可以找到併發更新/插入解決方案this article(又名UPSERT)有趣。它提出了幾種常用的upsert測試方法,以查看實際使用的方法保證數據在select和next語句之間未被修改。結果是令人震驚的,我會說。
2
相關問題
- 1. 在SELECT語句中使用sqlite預處理語句
- 2. 如何使用sql事務select select case語句
- 3. Select語句的SQL錯誤處理
- 4. 預處理語句結合「SELECT凡在」
- 5. 在select語句上實現批處理
- 6. 多個預處理語句(SELECT)
- 7. SQL Server事務和SELECT語句
- 8. 使用Select語句
- 9. 使用select語句
- 10. 使用SELECT語句
- 11. 如何處理使用oracle sql select語句的尾隨空格
- 12. mysqli - 使用SELECT FOUND_ROWS()和預處理語句
- 13. Android SQLite select * from表名%like key%使用預處理語句
- 14. 使用「使用」語句處理
- 15. jQuery的if語句和事件處理
- 16. select(select語句)
- 17. Select select select語句
- 18. 使用MySQL select語句
- 19. 專訪:使用select語句
- 20. 使用LinqDataSource和SELECT語句
- 21. 使用COUNT的SELECT語句
- 22. 使用INTERSECT的SELECT語句
- 23. SELECT語句不使用possible_keys
- 24. 如何處理SQL Select語句(IBatis 2)中的Empty IN子句?
- 25. 使用Select語句,其中X IN(SELECT ...)
- 26. 使用If語句附加一個事件處理程序
- 27. SELECT ... FOR UPDATE與預處理語句不起作用
- 28. 從ADO.NET調用Oracle時批處理多個select語句
- 29. 預處理語句
- 30. 處理switch語句
我使用服務代理與高度併發服務與類似的情況下,並有高死亡率下的SQL死鎖問題。 應用這個建議和**特別是**上面提到的[文章](http://michaeljswart.com/2011/09/mythbusting-concurrent-updateinsert-solutions/)修復了所有的僵局 - 謝謝:-) – Sia 2016-09-20 21:04:37