gorm 中的事务运用

使用背景

在编写业务代码的过程中,如果涉及到多张表的更新操作,为了确保数据的一致性,我们会在业务代码的过程中加上事务的控制,那么针对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)

你可能感兴趣的:(gorm,go)