我在用
https://pkg.go.dev/github.com/jmoiron/[email protected]
連接到 postgres 并進行查詢。如果我的 transaction.Commit 失敗,我應該做 transaction.Rollback
例子
tx, err := appState.PgConn.Beginx()
if err != nil {
return err
}
// then some queries using this tx reference
在那之后,當我們提交事務時,我們應該做什么.. 方法 1
err:= tx.Commit()
if err != nil {
return err;
}
還是我們應該使用方法 2
err1 := tx.Commit()
if err1 != nil {
err2:= tx.Rollback()
if err2 !=nil {
return err2
}
}
uj5u.com熱心網友回復:
sqlx Tx 型別是一個包裝器,sql.Tx并且該型別狀態的檔案:
在呼叫 Commit 或 Rollback 后,事務上的所有操作都會失敗并顯示 ErrTxDone。
所以呼叫RollBackafter Commit(無論成功與否)都不會產生影響(并且會回傳ErrTxDone)。您可以在此處的代碼中看到這一點。這意味著沒有理由Rollback在已經呼叫之后再呼叫Commit(所以使用方法 1)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524279.html
標籤:去sqlx
