go gorm手动事务的实例

366 阅读1分钟

go gorm手动事务的实例

scoresModel := novel.ScoresModel{NovelId: int(novelId), UserId: int(userId), Score: n.starNumTOScore(int(starNum))}
	// 开始事务
	tx := variable.GormDbMysql.Begin()

	if err := tx.Table("tb_novel_scores").Create(&scoresModel).Error;err != nil {
		//
		tx.Rollback()
		return err
	}
	if err := tx.Table("tb_novel_statistics").Where("novel_id = ?", novelId).Update("score_num",  gorm.Expr("score_num + ?", 1)).Error;err != nil {
		tx.Rollback()
		return err
	}

	tx.Commit()

	return nil