ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-09-06 18:00:29  阅读:216  来源: 互联网

标签:删除 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
来源: https://www.cnblogs.com/mayanan/p/16662778.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有