【go】gorm\xorm\ent事务处理

文章目录

  • [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
}
相关推荐
Pluto_CSND11 小时前
Java中的静态代理与动态代理(Proxy.newProxyInstance)
java·开发语言
惊讶的猫13 小时前
LSTM论文解读
开发语言·python
獨枭13 小时前
C# 本地项目引用失效与恢复全攻略
开发语言·c#·visual studio
国服第二切图仔14 小时前
Rust开发之Trait 定义通用行为——实现形状面积计算系统
开发语言·网络·rust
mjhcsp14 小时前
C++ 循环结构:控制程序重复执行的核心机制
开发语言·c++·算法
A阳俊yi14 小时前
Spring Data JPA
java·开发语言
小王不爱笑13214 小时前
Spring AOP(AOP+JDBC 模板 + 转账案例)
java·后端·spring
csbysj202014 小时前
CSS 对齐
开发语言
爱吃巧克力的程序媛14 小时前
将qt界面中加载css或者qss样式
开发语言·css·qt