我在某些情況下看到了交易使用情況,但從未真正瞭解應該在哪種情況下使用它們。應該如何以及何時使用交易(開始交易聲明)?我讀過微軟不建議在觸發器和存儲過程中使用事務語句(提交,回滾)。如何使用事務(開始事務,提交事務)?
8
A
回答
5
在插入或操作數據以確保一切都一致時,可以將事務與存儲過程或SQL腳本中的錯誤處理結合使用。例如,如果您有一個將記錄插入父表和子表的存儲過程,則需要確保首先插入父記錄;如果失敗,您可以回滾您的更改,以便您沒有孤兒記錄。關於如何在SQL Server中使用錯誤處理,Erland Sommarskog有great article。
最後,哪裏有微軟建議不是在存儲過程中使用事務嗎?我認爲存儲過程將是一個理想的使用它們的地方。
2
如果我從一個賬戶轉移到moey另外,我希望它是100%成功或100%的失敗:
UPDATE PersonalAccount SET Balance = Balance - 100 WHERE Username = 'gbn'
--what if the server caught fire here?
UPDATE SavingsAccount SET Balance = Balance + 100 WHERE Username = 'gbn'
至於你所讀的,但沒有必要使用完整的垃圾BEGIN TRAN在觸發器中。
從「Nested stored procedures containing TRY CATCH ROLLBACK pattern?」
相關問題
- 1. 在MS SQL中開始事務並提交事務
- 2. 開始新的事務是否強制當前事務提交?
- 3. SQL開始事務沒有提交
- 4. Spring aop事務未提交事務
- 5. JDBC事務開始
- 6. 等待其他事務在開始另一個事務之前提交/回滾?
- 7. SQL Server事務我如何提交我的事務
- 8. 在當前事務之外提交事務(如Oracle中的自治事務)
- 9. 在羣中刪除 - 自動提交與開始/提交事務
- 10. 事務回調或提交()
- 11. 有未提交的事務
- 12. 更新後提交事務
- 13. 未提交SQLite事務
- 14. 在@Transactional事務中提交
- 15. 部分提交MySQL事務?
- 16. spring mybatis事務提交
- 17. TransactionFailureException:無法提交事務
- 18. MySQL的:事務被提交
- 19. 如何在EJB中提交事務?
- 20. Spring - 在JPA事務後提交JMS事務
- 21. 無法提交JPA事務 - RollbackException:標記爲rollbackOnly的事務
- 22. 事務readonly = true在提交事務時不會拋出異常
- 23. SQLite事務填寫提交事務之前的表
- 24. 回滾事務請求沒有相應的開始事務
- 25. TransactionSystemException:無法回滾Hibernate事務;事務未開始
- 26. 使用MySql事務CREATE TABLE事務
- 27. 使用事務日誌回滾事務
- 28. 使用事務
- 29. java.sql.SQLException:無法在全局事務中使用本地事務提交
- 30. 沒有「開始事務」的單個「提交」語句
謝謝,也許我的說法的一個例子是關於太直了:有一種警告,使用提交或回滾過程或觸發器內可能會導致錯誤:http://msdn.microsoft.com /en-us/library/ms187844(v=SQL.100).aspx – juur 2010-09-26 16:37:15