如果我的方法有幾個只讀,只有更新,刪除語句是否有創建一個事務?雖然在表面上它沒有任何意義(如果它是單線程的);但這是一個併發的Web應用程序,其中多個線程可能同時修改數據。我真的需要數據庫事務嗎?
0
A
回答
1
是的,可能有一個很好的理由將您的讀取(SELECT)操作包含在明確的事務或工作單元中。如果更新或刪除某行的決定取決於您讀取的行(同一行或另一個表中的某行)中的列值,或者甚至存在某行,則可能需要將該SELECT作爲的交易。
一個簡單的示例情況:表A包含書籍,並具有用於評級的int列。如果評分爲零(0),我想要刪除書籍行。如果沒有事務,數據層中的代碼將選擇評級爲0的行,然後迭代該書集行。在選擇行後的某個時間,另一個用戶將其中一本書的評分改爲一(1)。如果不應該刪除那本書,你最終還是會刪除該書。
在您讀取數據(時間戳等)後,存在數據一致性和檢查更新的策略,但您只需要在讀取數據並根據該數據做出決策時評估數據完整性的風險,並允許其他用戶更新相同的數據。
交易意味着消除這種風險。
1
,如果你有一個以上的數據庫操作(INSERT,UPDATE,DELETE)的方法會有一點用橫切
1
如果此方法例如2接連讀取,並且存在另一種方法更新你的數據庫。它可能發生,一個讀取發生,然後你的其他(事務)方法同時運行,並且只有在你的第二個讀取被執行之後。這可能會導致無效的讀取結果。
相關問題
- 1. 數據庫鎖需要事務嗎?
- 2. 我真的需要加密數據嗎?
- 3. 我真的需要服務層嗎?
- 4. 我真的需要atexit_b嗎?
- 5. 我真的需要MVVM嗎?
- 6. 我真的需要bindParam嗎?
- 7. 我真的需要hiveserver2嗎?
- 8. Java - 我需要一個數據庫嗎?
- 9. 我是否真的需要規範化我的數據庫?
- 10. 我需要一個JSON數據庫的Web服務器嗎?
- 11. PHP OOP數據庫類 - 它真的需要嗎?
- 12. 我是否需要使用c#TableAdapter進行數據庫事務?
- 13. Android:我真的需要擔心關閉SQLite數據庫實例嗎?
- 14. 我們真的需要EDT嗎?
- 15. 我真的需要做mysql_close()嗎?
- 16. 我真的需要寫這個「SerializationHelper」嗎?
- 17. 我們真的需要Automapper嗎?
- 18. Portal:我真的需要一個Portal嗎?
- 19. 我真的需要使用ContentProvider嗎?
- 20. c#vb:我們真的需要System.Lazy嗎?
- 21. INDY - 我真的需要cookies嗎?
- 22. css BEM - 我們真的需要E嗎?
- 23. 我們真的需要「oauth_nonce」嗎?
- 24. 我真的需要散列密碼嗎?
- 25. 我真的需要碼頭羣嗎?
- 26. 我真的需要在存儲過程中使用事務嗎? [MSSQL 2005]
- 27. 我需要爲我的數據庫每個表的類嗎?
- 28. 我需要一個用於我的軟件的數據庫嗎?
- 29. GLSL Renderbuffer真的需要嗎?
- 30. Subversion *真的需要ActivePython嗎?
系統中是否有其他方法可能寫入數據庫?可以看到部分更新的數據嗎? – chrylis
如果您重視您數據的一致性,那麼***是***。如果您不關心數據是否損壞,或者您的數據庫一次只能由一個用戶訪問,則不會。 – Andreas
我已經修改了一些問題。這是併發的Web應用程序。但沒有具體的交易要求。 – Imran