当前位置: 首页 > news >正文

Java转Go日记(四十一):Gorm删除

1.1.1. 删除/软删除

警告删除记录时,需要确保其主要字段具有值,GORM将使用主键删除记录,如果主要字段为空,GORM将删除模型的所有记录

    // 删除存在的记录db.Delete(&email)DELETE from emails where id=10;// 为Delete语句添加额外的SQL选项db.Set("gorm:delete_option", "OPTION (OPTIMIZE FOR UNKNOWN)").Delete(&email)DELETE from emails where id=10 OPTION (OPTIMIZE FOR UNKNOWN);

1.1.2. 批量删除

删除所有匹配记录

    db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})DELETE from emails where email LIKE "%jinhu%";db.Delete(Email{}, "email LIKE ?", "%jinzhu%")DELETE from emails where email LIKE "%jinhu%";

1.1.3. 软删除

如果模型有DeletedAt字段,它将自动获得软删除功能! 那么在调用Delete时不会从数据库中永久删除,而是只将字段DeletedAt的值设置为当前时间。

    db.Delete(&user)UPDATE users SET deleted_at="2013-10-29 10:23" WHERE id = 111;// 批量删除db.Where("age = ?", 20).Delete(&User{})UPDATE users SET deleted_at="2013-10-29 10:23" WHERE age = 20;// 软删除的记录将在查询时被忽略db.Where("age = 20").Find(&user)SELECT * FROM users WHERE age = 20 AND deleted_at IS NULL;// 使用Unscoped查找软删除的记录db.Unscoped().Where("age = 20").Find(&users)SELECT * FROM users WHERE age = 20;// 使用Unscoped永久删除记录db.Unscoped().Delete(&order)DELETE FROM orders WHERE id=10;

相关文章:

  • 【iOS】类结构分析
  • 中间件-seata
  • [Linux] Linux线程信号的原理与应用
  • (二十四)Java网络编程全面解析:从基础到实践
  • 在 Excel 中使用通义灵码辅助开发 VBA 程序
  • LeetCode 1345. 跳跃游戏 IV(困难)
  • ZooKeeper 原理解析及优劣比较
  • Gartner《AI Infrastructure WithKubernetes参考架构》学习心得
  • LabVIEW下AI开发
  • 杰里7006d日志分析
  • 前端混色实现半透明效果
  • conda 设置env后,环境还是安装在c盘的解决方式:
  • CSS专题之常见布局
  • 虚拟环境中VSCode运行jupyter文件
  • Spring Boot中的分布式缓存方案
  • LSTM语言模型验证代码
  • 零售智能执行大模型架构设计:从空间建模到上下文推理,再到智能Agent
  • 小程序涉及提供提供文本深度合成技术,请补充选择:深度合成-AI问答类目
  • 【Redisson】快速实现分布式锁
  • 打卡第二十三天
  • 全国首例闭环脊髓神经接口手术在浙江完成,截瘫患者实现自主行走
  • 河北省纪委原副书记、省监委原副主任陈玉祥一审获刑十二年
  • 商务部就美国商务部调整芯片出口管制有关表述答记者问
  • 俄需要达成怎样的特别军事行动结果?普京:包含四个方面
  • 美国失去最后一个AAA评级,资产价格怎么走?美股或将触及天花板
  • 悬疑剧背后的女编剧:创作的差异不在性别,而在经验