错误用法
err := db.Transaction(func(tx *gorm.DB) error {
tx = tx.Where("tid=?", req.Tid).Delete(Model{})
if err := tx.Error; err != nil {
common.LOGGER.Errorf("delete t fail,error:%s", err)
return fmt.Errorf("删除任务出错")
}
if tx.RowsAffected == 0 {
return fmt.Errorf("操作失败,请检查任务状态")
}
err := tx.Where("tid=?", req.Tid).Delete(Result{}).Error
if err != nil {
common.LOGGER.Errorf("delete result fail,error:%s", err)
return fmt.Errorf("删除任务出错")
}
return nil
})
正确用法
err := db.Transaction(func(tx *gorm.DB) error {
result = tx.Where("tid=?", req.Tid).Delete(Model{})
if err := result.Error; err != nil {
common.LOGGER.Errorf("delete t fail,error:%s", err)
return fmt.Errorf("删除任务出错")
}
if result.RowsAffected == 0 {
return fmt.Errorf("操作失败,请检查任务状态")
}
result = tx.Where("tid=?", req.Tid).Delete(Result{})
if err := result.Error; err != nil {
common.LOGGER.Errorf("delete result fail,error:%s", err)
return fmt.Errorf("删除任务出错")
}
return nil
})