首页 > 其他分享 >gorm如何支持软删除+联合唯一索引

gorm如何支持软删除+联合唯一索引

时间:2022-09-06 18:00:53浏览次数:95  
标签:删除 plugin 索引 io soft gorm delete

gorm默认支持软删除

如果想要支持联合唯一索引,就需要用到一个gorm的插件库:gorm.io/plugin/soft_delete
By default, gorm.Model uses *time.Time as the value for the DeletedAt field, and it provides other data formats support with plugin gorm.io/plugin/soft_delete

INFO when creating unique composite index for the DeletedAt field, you must use other data format like unix second/flag with plugin gorm.io/plugin/soft_delete‘s help, e.g:

import "gorm.io/plugin/soft_delete"

type User struct {
  ID        uint
  Name      string                `gorm:"uniqueIndex:udx_name"`
  DeletedAt soft_delete.DeletedAt `gorm:"uniqueIndex:udx_name"`
}

这样的话,表users即支持了软删除,又支持了name和deleted_at的联合唯一索引,还是很方便的啊。

软删除和应删除操作

	// 软删除
	db.Where("id = 10").Delete(&User{})

	// 查询的时候可以过滤掉软删除的数据
	var u = make([]User, 0)
	db.Find(&u)
	fmt.Println(u)
	
	// 硬删除:从数据库彻底删除数据
	db.Unscoped().Where("id = ?", 7).Delete(&User{})

参考文档

标签:删除,plugin,索引,io,soft,gorm,delete
From: https://www.cnblogs.com/mayanan/p/16662778.html

相关文章

  • betterZip解压后压缩包会删除 zip文件解压后原压缩文件能不能删掉
    https://www.betterzipcn.com/faq/better-ydeq.html 品牌型号:MacBookBookAir系统:MacOSMojave10.14软件版本:BetterZip5压缩包是一种文件压缩格式,一般压缩包在被......
  • 删除链表的倒数第N个节点
    删除链表的倒数第N个节点给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗?示例1:输入:head=[1,2,3,4,5],n=2输出:[1......
  • 空间点索引算法-GeoHash
    介绍GeoHash是一种空间地址编码方法,能够把二维的空间经纬度数据编码成一个字符串。一个字符串代表某一矩形区域,矩形区域内所有的点都共享相同的GeoHash字符串。相当于给......
  • leetcode 83. Remove Duplicates from Sorted List 删除排序链表中的重复元素(简单)
    一、题目大意给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。示例1:输入:head=[1,1,2]输出:[1,2]示例2:输入:h......
  • MSSQL Sqlserver 使用ms未公开的存储过程重建全库表索引
    两个有用的ms未公开的存储过程sp_MSforeachDB遍历所有的数据库sp_MSforeachtable遍历为库中所有的表可以用sp_helptext来查看他们的实现代码 应用:---重建全库索......
  • 什么是覆盖索引
    前言在了解索引覆盖前,我们先来看下,聚集索引,非聚集索引,回表等概念.什么是聚集索引聚集索引是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数......
  • mysql索引优化
    一、分页查询优化很多时候我们业务系统实现分页功能可能会用如下sql实现:select*fromemployeeslimit10000,10;表示从表employees中取出从10001行开始的10行......
  • SQLServer重建索引
    Use[数据库名称]GoDECLARE@DBCCStringNVARCHAR(1000)DECLARE@TableNameVARCHAR(100)DECLARECur_IndexCURSORFORSELECTNameASTblNameFROMsysobjectsWHE......
  • Debian 启用root账户远程登录并删除多余用户
    1开启远程登录执行下方命令后开启root用户的远程登录sudoecho"Port22">>/etc/ssh/sshd_config sudoecho"PermitRootLoginyes">>/etc/ssh/sshd_config sudos......
  • Python3项目初始化10-->前端基础jquery、ajax,sweetalert--创建用户删除用户改造
    32、JS基础-dmodal点击“创建”,不调整新页面操作,直接弹出框操作。modals弹框指示页面:https://v3.bootcss.com/javascript/#modals拷贝代码,父节点在body里面。<aclass=......