golang gorm的Callbacks事务回滚对象怎么创建
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,这篇文章主要介绍了golang gorm的Callbacks事务回滚对象怎么创建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang gorm的Callbacks事
千家信息网最后更新 2025年11月13日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事务回滚对象怎么创建"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
事务
对象
更新
过程
关联
事物
知识
查询
内容
数据
时间
篇文章
运行
价值
字段
指针
操作简单
数据库
文章
方法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库字符连接
软件开发产品租赁合同
多媒体的网络技术应用视频
JGI数据库blast
党组的网络安全问题
香港高防服务器租用
switch覆盖服务器保存数据
软件开发自动化工程师
内蒙古网络技术学院
网络安全法要求维护数据
高通网络技术团队
黑客改系统数据库缩写
北京充电线软件开发
网络技术部门面试题
数据库的相关方法
褚霸数据库
软件开发的设计的目的
华为 思科网络技术
服务器是干嘛的
航空航天软件开发票
共建网络安全共识
数据库课程设计运行环境
江苏云柜网络技术有限公司聊城
在网络安全中捏造是指未授权
河北品质软件开发应用
arcgis地理数据库c盘
软件开发技术服务安全协议
为什么数据库有感叹号
IIS无法打开数据库
联通终端服务器连接失败