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