golang gorm的Callbacks事务回滚对象怎么创建
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要介绍了golang gorm的Callbacks事务回滚对象怎么创建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang gorm的Callbacks事
千家信息网最后更新 2025年01月19日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安全错误
数据库的锁怎样保障安全
加快网络安全产业园建设
服务器管理面板图
天津服务器架构工程师应聘云空间
网络安全联盟怎么删除
win界面软件开发工具
天津志禧网络技术有限公司青海
服务器主板开机跳线图解
做网络安全需要汇编吗
删除sql数据库的数据
淘宝服务器一直繁忙
网络安全应用开发
我的世界主播在玩的服务器号
中国的ai服务器市场
广州户外直播软件开发
结合实际谈谈怎么做好网络安全
网络安全管理岗位事迹
oracle数据库回滚点
网络安全涉及的行业分工
在数据库查询选修课程的信息
青岛易易互联网科技
银川办公软件开发公司
软件开发售后服务技术支持
直销软件开发一般多少钱
数据库 存储文件地址 读取
食用菌视频软件开发
服务器主机卫士
无线网络安全技术通俗的解释
周村销售库存软件开发
工艺制造数据库
软件开发人员的薪酬结构设计