锦州网站建设品牌北京制作网站的公司
文章目录
- 1 gorm
 - 1.1 开启事务
 - 1.2 执行操作
 - 1.3 提交或回滚
 
- 2 xorm
 - 2.1 开启事务
 - 2.2 执行操作
 - 2.3 提交或回滚
 
- 3 ent
 - 3.1 开启事务
 - 3.2 执行操作
 - 3.3 提交或回滚
 
前言:本文介绍golang三种orm框架对数据库事务的操作
1 gorm
Begin开启事务
 tx *gorm.DB
1.1 开启事务
tx := db.Begin()
 
1.2 执行操作
if err := tx.Create(&User{Name: "Amy"}).Error; err != nil {tx.Rollback()return err
}
 
1.3 提交或回滚
if err := tx.Commit().Error; err != nil {tx.Rollback()return err
}
 
2 xorm
NewSession开启事务
 tx *xorm.Session
2.1 开启事务
tx: = db.NewSession()
defer tx.Close()
err = tx.Begin()
if err != nil {return err
}
 
2.2 执行操作
_, err := tx.Table("test").Insert(&users)
if err != nil {tx.Rollback()return err
} 
2.3 提交或回滚
err = tx.Commit()
if err != nil {tx.Rollback()return err
}
 
3 ent
Tx开启事务
 tx *ent.Tx
3.1 开启事务
tx, err := db.Tx(ctx)
if err != nil {return err
}
 
3.2 执行操作
err := tx.User.Create().SetID("aaa").SetAction("create").SetName("amy").Save(ctx)
}
if err != nil {tx.Rollback()return err
}
 
3.3 提交或回滚
if err := tx.Commit(); err != nil {tx.Rollback()return err
}
