gorm如何支持软删除+联合唯一索引
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{})
分类:
gorm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)