所以我不能說得太具體,但我認為我能告訴你的就足以解決這個問題。首先,我使用 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 回答
- 0 關注
- 228 瀏覽
添加回答
舉報
0/150
提交
取消