transaction.go 655 B

12345678910111213141516171819202122232425262728293031
  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. } else {
  13. db.Error = tx.Error
  14. }
  15. }
  16. }
  17. func CommitOrRollbackTransaction(db *gorm.DB) {
  18. if !db.Config.SkipDefaultTransaction {
  19. if _, ok := db.InstanceGet("gorm:started_transaction"); ok {
  20. if db.Error == nil {
  21. db.Commit()
  22. } else {
  23. db.Rollback()
  24. }
  25. db.Statement.ConnPool = db.ConnPool
  26. }
  27. }
  28. }