返回顶部
首页 > 资讯 > 后端开发 > GO >golang gorm的Callbacks事务回滚对象怎么创建
  • 756
分享到

golang gorm的Callbacks事务回滚对象怎么创建

2023-06-30 04:06:31 756人浏览 安东尼
摘要

这篇文章主要介绍了golang gORM的Callbacks事务回滚对象怎么创建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Golang gorm的Callbacks事务回滚对象怎么创建文

这篇文章主要介绍了golang gORM的Callbacks事务回滚对象怎么创建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Golang gorm的Callbacks事务回滚对象怎么创建文章都会有所收获,下面我们一起来看看吧。

1. Callbacks

您可以将回调方法定义为模型结构的指针,在创建,更新,查询,删除时将被调用,如果任何回调返回错误,gorm将停止未来操作并回滚所有更改。

1.1. 创建对象

创建过程中可用的回调

// begin transaction 开始事物BeforeSaveBeforeCreate// save before associations 保存前关联// update timestamp `CreatedAt`, `UpdatedAt` 更新`CreatedAt`, `UpdatedAt`时间戳// save self 保存自己// reload fields that have default value and its value is blank 重新加载具有默认值且其值为空的字段// save after associations 保存后关联AfterCreateAfterSave// commit or rollback transaction 提交或回滚事务

1.2. 更新对象

更新过程中可用的回调

// begin transaction 开始事物BeforeSaveBeforeUpdate// save before associations 保存前关联// update timestamp `UpdatedAt` 更新`UpdatedAt`时间戳// save self 保存自己// save after associations 保存后关联AfterUpdateAfterSave// commit or rollback transaction 提交或回滚事务

1.3. 删除对象

删除过程中可用的回调

// begin transaction 开始事物BeforeDelete// delete self 删除自己AfterDelete// commit or rollback transaction 提交或回滚事务

1.4. 查询对象

查询过程中可用的回调

// load data from database 从数据库加载数据// Preloading (edger loading) 预加载(加载)AfterFind

1.5. 回调示例

func (u *User) BeforeUpdate() (err error) {    if u.readonly() {        err = errors.New("read only user")    }    return}// 如果用户ID大于1000,则回滚插入func (u *User) AfterCreate() (err error) {    if (u.Id > 1000) {        err = errors.New("user id is already greater than 1000")    }    return}

gorm中的保存/删除操作正在事务中运行,因此在该事务中所做的更改不可见,除非提交。 如果要在回调中使用这些更改,则需要在同一事务中运行sql。 所以你需要传递当前事务到回调,像这样:

func (u *User) AfterCreate(tx *gorm.DB) (err error) {    tx.Model(u).Update("role", "admin")    return}func (u *User) AfterCreate(scope *gorm.Scope) (err error) {  scope.DB().Model(u).Update("role", "admin")    return}

关于“golang gorm的Callbacks事务回滚对象怎么创建”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“golang gorm的Callbacks事务回滚对象怎么创建”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网GO频道。

您可能感兴趣的文档:

--结束END--

本文标题: golang gorm的Callbacks事务回滚对象怎么创建

本文链接: https://lsjlt.com/news/327288.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • golang gorm的Callbacks事务回滚对象怎么创建
    这篇文章主要介绍了golang gorm的Callbacks事务回滚对象怎么创建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang gorm的Callbacks事务回滚对象怎么创建文...
    99+
    2023-06-30
  • golang gorm的Callbacks事务回滚对象操作示例
    目录1. Callbacks1.1. 创建对象1.2. 更新对象1.3. 删除对象1.4. 查询对象1.5. 回调示例1. Callbacks 您可以将回调方法定义为模型结构的指针,...
    99+
    2024-04-02
  • golang GORM和Gin无法创建具有关联的对象
    问题内容 我使用 GORM 作为 ORM 以及我的 Golang API 来与我的数据库进行通信。 但是对于创建与数据库关联的实体,代码失败了(DB.Create(&data)...
    99+
    2024-02-12
  • golang怎么通过反射创建新对象
    小编给大家分享一下golang怎么通过反射创建新对象,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!golang适合做什么golang可以做服务器端开发,但gola...
    99+
    2023-06-14
  • ADO.NET的DataTable对象怎么创建
    本篇内容主要讲解“ADO.NET的DataTable对象怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ADO.NET的DataTable对象怎么创建”吧!ADO.NET可以在与数据库断开...
    99+
    2023-06-17
  • java怎么创建一个类的对象
    在Java中,可以通过以下步骤创建一个类的对象:1. 首先,你需要创建一个类。一个类是一个模板,用于定义对象的属性和方法。```ja...
    99+
    2023-10-11
    java
  • 怎么在golang中实现mysql数据库事务的提交与回滚
    这期内容当中小编将会给大家带来有关怎么在golang中实现mysql数据库事务的提交与回滚,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。golang适合做什么golang可以做服务器端开发,但golang...
    99+
    2023-06-14
  • k8s更高级的对象Deployment怎么创建
    这篇文章主要介绍“k8s更高级的对象Deployment怎么创建”,在日常操作中,相信很多人在k8s更高级的对象Deployment怎么创建问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”k8s更高级的对象De...
    99+
    2023-07-05
  • 浅谈Spring嵌套事务是怎么回滚的
    目录源码解析TransactionAspectSupport.invokeWithinTransaction()内层事务TransactionAspectSupport.comple...
    99+
    2024-04-02
  • python怎么创建支持with语句的对象
    这篇文章主要为大家展示了“python怎么创建支持with语句的对象”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python怎么创建支持with语句的对象”这篇文章吧。创建支持「with」语句...
    99+
    2023-06-26
  • Java中怎么创建自己的线程对象
    本篇内容主要讲解“Java中怎么创建自己的线程对象”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中怎么创建自己的线程对象”吧!默认情况下,主线程和垃圾回收线程都是由系统创建的,但是我们需...
    99+
    2023-06-02
  • 出现未将对象引用设置到对象的实例提示是怎么回事
    这个错误提示通常是在编程中出现的,表示在尝试使用一个未初始化或者为null的对象引用时触发了错误。常见的原因有:1. 未初始化对象:...
    99+
    2023-09-21
    对象
  • automation服务器不能创建对象指的是什么意思
    这篇文章主要介绍automation服务器不能创建对象指的是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!automation服务器不能创建对象是因为有些网站的脚本处理和相关认证不是很规范,导致当前浏览器的安...
    99+
    2023-06-20
  • spring在service层的方法报错事务不会回滚怎么解决
    这篇文章主要介绍“spring在service层的方法报错事务不会回滚怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“spring在service层的方法报错事务不会回滚怎么解决”文章能帮助大...
    99+
    2023-06-29
  • spring中bean注入无效怎么解决和new创建对象的区别是什么
    这篇文章主要介绍“spring中bean注入无效怎么解决和new创建对象的区别是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“spring中bean注入无效怎么解决和new创建对象的区别是什么”...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作