我已經看到了許多不同的cftransaction
示例並閱讀了不同的站點,但仍然無法找到cftransaction
的哪些部分是必要的明確答案。我試圖做到的是非常簡單的:應用層數據庫事務的最佳實踐
- 啓動事務
- 運行多個插入/更新
- 在插入過程中關閉交易
如果在任何時候出錯/更新,我想回滾事務。這是我過去所做的:
<cftransaction>
<cftry>
<!--- multiple insert/update queries --->
<cfcatch type="any">
<cftransaction action="rollback">
<!--- log error, show user message --->
</cfcatch>
</cftry>
<cftransaction action="commit">
</cftransaction>
這是正確的嗎?最佳做法是什麼?並非所有cftransaction
的實例都遵循上述示例。一些只有開始和結束標籤。
我一直在看到我的數據庫服務器出現了一些問題,並認爲不恰當地使用事務可能是其中一個問題。我在活動監視器中看到大量的:set transaction isolation level read committed
進程正在佔用大量的CPU。
如果出現錯誤,這不會造成問題嗎?你永遠不會讓它進入 cftransaction> – Jason
否,因爲這是默認行爲。如果CFTRANSACTION塊中的任何查詢失敗,它們都會回滾。 – ale
我同意提交和回滾是多餘的(當只使用單個事務時)。但是,有些人更喜歡使用它們來增加清晰度。當依賴隱式提交/回滾行爲時,代碼正在做什麼並不明顯。 – Leigh