Files
2026-07-15 22:42:31 +08:00

29 lines
426 B
Go

package utils
import (
"gorm.io/gorm"
)
// WithTransaction 执行一个包含事务的操作
func WithTransaction(db *gorm.DB, fn func(tx *gorm.DB) error) error {
tx := db.Begin()
defer func() {
if r := recover(); r != nil {
tx.Rollback()
panic(r)
}
}()
if err := fn(tx); err != nil {
tx.Rollback()
return err
}
if err := tx.Commit().Error; err != nil {
tx.Rollback()
return err
}
return nil
}