使用背景
在编写业务代码的过程中,如果涉及到多张表的更新操作,为了确保数据的一致性,我们会在业务代码的过程中加上事务的控制,那么针对go 语言中,如果我们使用gorm框架改如何操作呢?
gorm中使用事务的几种方式
- 方式一(业务层事务)
func NewTransaction() *gorm.DB {return suit.GetGormClient().Begin()
}tx := s.AlarmDao.NewTransaction()
defer tx.Rollback()...(具体业务处理)err = tx.Commit().Error
- 方式二(dao层事务)
func (r *Repo) TxUpdateBonus(ctx context.Context, bonus *entity.Bonus, transaction *entity.Transaction) error {return r.Connection().Transaction(func(tx *gorm.DB) error {if bonus.ID < 1 {if err := tx.WithContext(ctx)