transaction.go 621 B

1234567891011121314151617181920212223242526272829
  1. package callbacks
  2. import (
  3. "gorm.io/gorm"
  4. )
  5. func BeginTransaction(db *gorm.DB) {
  6. if !db.Config.SkipDefaultTransaction {
  7. if tx := db.Begin(); tx.Error == nil {
  8. db.Statement.ConnPool = tx.Statement.ConnPool
  9. db.InstanceSet("gorm:started_transaction", true)
  10. } else if tx.Error == gorm.ErrInvalidTransaction {
  11. tx.Error = nil
  12. }
  13. }
  14. }
  15. func CommitOrRollbackTransaction(db *gorm.DB) {
  16. if !db.Config.SkipDefaultTransaction {
  17. if _, ok := db.InstanceGet("gorm:started_transaction"); ok {
  18. if db.Error == nil {
  19. db.Commit()
  20. } else {
  21. db.Rollback()
  22. }
  23. db.Statement.ConnPool = db.ConnPool
  24. }
  25. }
  26. }