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

sql/db 事务无法使用 ms sql 正确回滚

sql/db 事务无法使用 ms sql 正确回滚

Go
HUWWW 2021-11-01 17:23:10
所以我不能说得太具体,但我认为我能告诉你的就足以解决这个问题。首先,我使用 gorp 进行设置并进行交易。我正在使用github.com/denisenkom/go-mssqldb驱动程序。然后我进行了一系列操作,如果其中失败了我rollback,如果都成功了我commit。问题是它只回滚失败的语句,而不是其余的操作。我错了,这不是应该如何工作吗?这是一些粗略的伪代码,让您更好地了解我在说什么:trans,err := dbmap.Begin()//assume all errors are received and checked before continuingid := trans.Exec("insert thing") //successful, persists after rollback thing := trans.Select("Select thing") //successfultrans.Exec("update other_thing with thing") //successful, persists after rollbacknewthing := trans.Exec("insert new_thing with thing") //fails, rollsbackif err != nil{   trans.Rollback() //No errors   return}trans.Commit()我错了,这应当rollback一切,因为dbmap.Begin()?这是驱动程序实现中的错误吗?非常欢迎任何和所有帮助。谢谢!更新测试https://play.golang.org/p/0L3Vgk8C_F并且它有效,所以我猜这意味着它与 gorp 有关。我正在使用 v1 分支,因为这将很快投入生产,因此稳定性是关键。我会仔细检查它,但看起来它只是轻轻地包裹着它。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 205 浏览
慕课专栏
更多

添加回答

举报

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