本文摘自网络,作者,侵删。
// 事务处理
func Tx(funcs ...func(db *gorm.DB) error) (err error) {
tx := DB.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
err = fmt.Errorf("%v", err)
}
}()
for _, f := range funcs {
err = f(tx)
if err != nil {
tx.Rollback()
return
}
}
err = tx.Commit().Error
return
}
- 使用
var funcs []func(db *gorm.DB) error
for _, user := range prugs {
funcs = append(funcs, func(db *gorm.DB) error {
execSQL := ""
return db.Exec(execSQL, value...).Error
})
}
if err := global.Tx(funcs...); err != nil {
global.Log.Error("err:%s", err.Error())
return err
}
本文来自:简书
感谢作者:承诺一时的华丽
查看原文:Golang Gorm 事务极简封装
相关阅读 >>
更多相关阅读请进入《Go》频道 >>

Go语言101
一个与时俱进的Go编程知识库。