如题,golang 目前在自带的 database 数据库操作包里面,如果事务 commit 失败,需不需要 rollback 回滚?
例如
```go
err := session.Commit()
if err != nil {
session.Rollback()
return util.GetCommonErr(err.Error())
}
```
A transaction must end with a call to Commit or Rollback.
After a call to Commit or Rollback, all operations on the transaction fail with ErrTxDone.
所以如果Commit过,rollback也不过是返回个err
#4
更多评论
需要,一般都加在defer里
找了段代码,大概是这样
tx, err := m.DB().Begin()
if err != nil {
return err
}
defer tx.Rollback()
Update := query.NewUpdate(m.TableName())
Update.Update.AddFields(m.FieldsUpdate(f))
Update.Where.Condition = query.Equal("id", id)
_, err = Update.Query().Exec(tx)
if err != nil {
return err
}
return tx.Commit()
#2