为了账号安全,请及时绑定邮箱和手机立即绑定

如果使用 posgres 连接的 SQLX 的 transaction.Commit 失败

如果使用 posgres 连接的 SQLX 的 transaction.Commit 失败

Go
MYYA 2023-03-07 17:11:51
我在用https://pkg.go.dev/github.com/jmoiron/sqlx@v1.2.0连接到 postgres 并进行查询。如果我的 transaction.Commit 失败,我应该做 transaction.Rollback例子    tx, err := appState.PgConn.Beginx()    if err != nil {        return err    }    // then some queries using this tx reference在那之后,当我们提交事务时,我们应该做..方法 1err:= tx.Commit()if err != nil {    return err;}或者我们应该使用方法 2err1 := tx.Commit()if err1 != nil {   err2:= tx.Rollback()   if err2 !=nil {      return err2   }}
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

sqlx Tx 类型是一个包装器sql.Tx,该类型的文档说明:

在调用 Commit 或 Rollback 之后,事务上的所有操作都会失败并返回 ErrTxDone。

RollBack因此在之后调用Commit(无论成功与否)都不会产生影响(并且会返回ErrTxDone)。您可以在此处的代码中看到这一点。这意味着没有理由Rollback在已经调用之后再调用Commit(因此使用方法 1)。


查看完整回答
反对 回复 2023-03-07
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信