文章目录
- 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
}