github.com/systematiccaos/gorm@v1.22.6/callbacks/transaction.go (about) 1 package callbacks 2 3 import ( 4 "github.com/systematiccaos/gorm" 5 ) 6 7 func BeginTransaction(db *gorm.DB) { 8 if !db.Config.SkipDefaultTransaction && db.Error == nil { 9 if tx := db.Begin(); tx.Error == nil { 10 db.Statement.ConnPool = tx.Statement.ConnPool 11 db.InstanceSet("gorm:started_transaction", true) 12 } else if tx.Error == gorm.ErrInvalidTransaction { 13 tx.Error = nil 14 } else { 15 db.Error = tx.Error 16 } 17 } 18 } 19 20 func CommitOrRollbackTransaction(db *gorm.DB) { 21 if !db.Config.SkipDefaultTransaction { 22 if _, ok := db.InstanceGet("gorm:started_transaction"); ok { 23 if db.Error != nil { 24 db.Rollback() 25 } else { 26 db.Commit() 27 } 28 29 db.Statement.ConnPool = db.ConnPool 30 } 31 } 32 }