beego orm 调用多次sql的事物同步

来源:互联网 发布:linux查看jvm版本 编辑:程序博客网 时间:2024/06/05 14:25

在使用beego的时候,有个问题,操作多个增删改操作的时候,怎么样子事物同步
这里简单介绍一种,一条事物处理多条sql,普通执行,没有调用携程
下面是一次性删除多张表的数组,然后最后一次性提交事物

var buf bytes.Buffer
buf.WriteString(" DELETE FROM table1")
buf.WriteString(" WHERE ID =?")
o := orm.NewOrm()
o.Begin() //开事物
_, err := o.Raw(buf.String(), 45).Exec()
if err != nil {
o.Rollback()
return false, err
}
var buf2 bytes.Buffer
buf2.WriteString(" DELETE FROM table2")
buf2.WriteString(" WHERE ID = ?")
_, err2 := o.Raw(buf2.String(), 34).Exec()
if err2 != nil {
o.Rollback()
return false, err2
}
var buf3 bytes.Buffer
buf3.WriteString(" DELETE FROM table3")
buf3.WriteString(" WHERE ID = ?")
_, err3 := o.Raw(buf3.String(), 123).Exec()
if err3 != nil {
o.Rollback()
return false, err3
}
o.Commit() //所有事物统一提交
return true, nil

原创粉丝点击