// 事务处理
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
}
有疑问加站长微信联系(非本文作者)