全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

GORM 事务基础与使用

GORM 事务机制保证多个数据库操作的原子性,本文介绍事务的核心用法。

什么是事务

事务是一组数据库操作的逻辑单元,具有 ACID 四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

事务中的操作要么全部成功提交,要么全部回滚,不存在中间状态。

事务语法

GORM 提供三种核心方法管理事务:

方法作用
Begin()开启事务
Commit()提交事务
Rollback()回滚事务

基础用法

手动事务

Go
tx := db.Begin()

// 执行多个操作
if err := tx.Create(&user).Error; err != nil {
    tx.Rollback()
    return err
}

if err := tx.Create(&order).Error; err != nil {
    tx.Rollback()
    return err
}

// 全部成功则提交
tx.Commit()

使用 Transaction 方法(推荐)

Go
err := db.Transaction(func(tx *gorm.DB) error {
    if err := tx.Create(&user).Error; err != nil {
        return err
    }
    
    if err := tx.Create(&order).Error; err != nil {
        return err
    }
    
    return nil // 返回 nil 自动提交,返回 error 自动回滚
})

Transaction 方法封装了 Begin/Commit/Rollback,自动处理异常,是推荐用法。

注意事项

  • 事务内所有操作必须使用同一个 tx 对象,不能使用原始 db
  • 事务应及时提交或回滚,避免长事务占用连接资源
  • Transaction 回调函数返回 nil 时自动 Commit,返回非 nil 时自动 Rollback
  • 嵌套调用 Transaction 默认使用保存点(SavePoint)机制

要点总结

  • Begin() 开启事务,Commit() 提交,Rollback() 回滚
  • 推荐使用 db.Transaction() 方法,自动管理事务生命周期
  • 事务内操作必须共用同一事务对象
  • 回调函数返回值决定提交或回滚

文章存放路径:D:\git2\jwdev\articles\GORM\进阶\事务处理\事务基础与使用.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 GORM 事务上下文传递
下一篇 → GORM 事务隔离级别配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库