回答
當您需要完整處理一組更改以考慮操作完整且有效時,應使用事務。換句話說,如果只有一部分成功執行,是否會導致數據庫中存儲的數據不完整或無效?
例如,如果插入後跟更新,如果插入成功並且更新失敗,會發生什麼情況?如果這會導致數據不完整(在這種情況下是一個孤立記錄),則應該將這兩個語句包裝在一個事務中,以使它們以「set」形式完成。
「在需要處理一組更改時使用」 我認爲第二個「需求」是不必要的。 – 2009-07-07 18:35:27
如果您的單個數據修改語句要執行以完成一項任務,則所有操作都應在事務中。
這樣,如果第一個成功,但以下任何一個都有錯誤,您可以回滾(撤消)所有內容,就好像從未做過任何事情一樣。
每當你不喜歡它,如果部分操作可以完成,部分操作不能完成。
如果您正在執行兩個或更多您期望在功能上是原子的語句,則應該將它們包裝在事務中。
無論何時您想鎖定數據庫並可能導致生產應用程序崩潰,只要您想要通過隱藏的可擴展性噩夢來拋棄應用程序,請繼續創建事務。讓它變大,變慢,然後在裏面放一個循環。
嚴重的是,上述答案都不承認大量使用交易帶來的權衡和潛在問題。要小心,並且每次都要考慮風險/回報。
Ebay根本不使用它們。我相信還有很多其他人。
http://www.infoq.com/interviews/dan-pritchett-ebay-architecture
我一直很感興趣的是看到如何用其他技術取代交易的方法。 – 2014-02-26 18:35:50
每當任何操作ACID(原子性,一致性,隔離,耐久性)標準下屬於你應該使用交易
閱讀本article
- 1. 清潔架構 - 如何解決數據庫事務?
- 2. 使用事務升級SQLite數據庫
- 3. MySQL決定使用哪個數據庫
- 4. 如何決定何時使用超過$ _SESSION的數據庫
- 5. 數據庫事務
- 6. 數據庫事務
- 7. 決定數據庫
- 8. 如何監控數據庫事務?
- 9. 如何從java後端使用oracle數據庫中的事務?
- 10. 如何在Laravel中使用數據庫事務
- 11. 如何在兩個數據庫中使用JTA事務?
- 12. 如何使用psycopg2/python db api執行數據庫事務?
- 13. 如何使用事務數據庫創建關鍵部分?
- 14. Android - 如何通過ContentProvider修改數據庫時使用事務?
- 15. 數據庫事務和鎖定
- 16. 如何在非事務性數據庫中實現事務
- 17. 如何使用服務器數據庫?
- 18. Django如何確定我的數據庫是否支持事務?
- 19. nServiceBus:如何使與數據庫的非事務呼叫從事務性操作
- 20. 多個數據庫事務
- 21. 測試數據庫事務
- 22. 併發數據庫事務
- 23. Magento數據庫事務
- 24. web2py和數據庫事務
- 25. 如何使用由事務日誌傳送服務更新的數據庫
- 26. 如何在JUnit中使用Spring測試服務時回滾數據庫事務?
- 27. 如何在使用MS Access數據庫的SSIS中使用事務範圍?
- 28. 解決:如何正確完成DAO vba的訪問數據庫事務?
- 29. 如何使一系列非數據庫方法模擬事務。
- 30. 事務複製到Azure SQL數據庫 - 如何加密數據?
@Lance羅伯茨,tsql從哪裏來?這可以應用於任何數據庫。 OP從不說sql服務器。 – 2009-07-07 17:57:15