在 Go 資料庫互動中,使用 defer 進行交易回滾可能會造成問題。考慮以下範例:
tx, err := db.Begin() if err != nil { log.Fatal(err) } defer tx.Rollback() // Why defer?
此範例說明了 Go 中如何延遲交易回滾。延遲回滾可確保它始終被調用,即使以下操作遇到錯誤或程式碼在手動回滾之前突然返回。
為什麼不先提交並在出錯時手動回滾?
有人可能想知道為什麼不先提交事務,然後在發生錯誤時手動回滾。這種方法效率低下,因為它可能會導致建立孤立記錄或資料庫中出現不一致。
延遲回滾和提交工作流程
透過延遲回滾,程式碼確保以下操作失敗時會發生回滾。工作流程是這樣展開的:
延遲回滾的好處
附加說明
以上是為什麼在 Go 中推遲資料庫回滾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!