前言:本文介绍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
}