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