gpt4 book ai didi

sql-server-2008 - sql/db 事务没有使用 ms sql 正确回滚

转载 作者:IT老高 更新时间:2023-10-28 13:08:32 25 4
gpt4 key购买 nike

所以我不能说得太具体,但我想我能告诉你的就足以解决这个问题。首先,我使用 gorp 进行设置并获取交易。我正在使用 github.com/denisenkom/go-mssqldb 驱动程序。

然后我运行一系列操作,如果其中一个操作失败,我 rollback,如果都成功,我 commit。问题是它只是回滚失败的语句,而不是其余的操作。我错了,这不是应该的工作方式吗?

这里有一些粗略的伪代码,可以让你更好地理解我在说什么:

trans,err := dbmap.Begin()
//assume all errors are received and checked before continuing
id := trans.Exec("insert thing") //successful, persists after rollback
thing := trans.Select("Select thing") //successful
trans.Exec("update other_thing with thing") //successful, persists after rollback
newthing := trans.Exec("insert new_thing with thing") //fails, rollsback
if err != nil{
trans.Rollback() //No errors
return
}
trans.Commit()

我错了,应该 rollbackdbmap.Begin() 以来的所有内容?这是驱动程序实现中的错误吗?非常欢迎任何和所有帮助。谢谢!

更新

经过测试https://play.golang.org/p/0L3Vgk8C_F它起作用了,所以我猜这意味着它与gorp有关。我正在使用 v1 分支,因为这将很快投入生产,因此稳定性是关键。我会挑选它,但它看起来只是轻轻地包裹它。

最佳答案

检查您没有启用自动提交。许多命令行工具、uis 甚至驱动程序都默认启用它

关于sql-server-2008 - sql/db 事务没有使用 ms sql 正确回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com