什么是数据库软删除,什么场景下要用软删除?(go GORM硬删除)

什么是数据库软删除,什么场景下要用软删除?

go GORM硬删除

使用的是 GORM,默认启用了软删除功能,即通过将 deleted_at 字段设置为非空来标记删除的记录。这就是为什么在执行 db.Delete(&image) 后,实际上只是更新了 deleted_at 字段而不是真正删除记录。

go GORM中想要完全删除记录而不是软删除,可以使用 Unscoped() 方法来删除记录

	// 删除数据库中的记录
	var image models.UploadImageModel
	err = db.Where("file_name = ?", filename).First(&image).Error
	//如果您使用的是 GORM,默认启用了软删除功能,即通过将 deleted_at 字段设置为非空来标记删除的记录。
	//这就是为什么在执行 db.Delete(&image) 后,实际上只是更新了 deleted_at 字段而不是真正删除记录。
	if err == nil {
   
		//db.Delete(&image)
		//如果您想要完全删除记录而不是软删除,可以使用 Unscoped() 方法来删除记录。
		db.Unscoped().Delete(&image)
	}

什么是数据库软删除

软删除是一种常见的数据库设计模式,用于标记删除的记录而不是立即从数据库中删除它们。这种设计模式有以下几个常见的原因:

  1. 数据保留:软删除可以保留被删除记录的信息,以备将来需要恢复或进行审计。

  2. 数据完整性:软删除可以保持数据库的完整性,避免破坏关联的数据结构。

  3. 数据恢复:软删除可以方便地恢复被删除的记录,无需从备份中恢复。

  4. 数据审计:软删除可以记录删除操作的时间和操作者,用于审计和追踪。

软删除是根据具体需求和设计选择的一种方式,它提供了一种灵活的方式来管理和维护数据。

什么场景下要用软删除

软删除和硬删除都有各自适用的场景,具体使用哪种方式取决于您的业务需求和数据管理策略。以下是一些常见的场景和建议:

使用软删除的场景:

  1. 数据保留和历史记录:如果您需要保留被删除记录的信息和历史记录,以便将来需要恢复、审计或分析,软删除是一个不错的选择。
  2. 数据关联和完整性:当删除的记录与其他数据存在关联关系时,软删除可以保持数据的完整性,避免破坏关联的数据结构。
  3. 用户误操作的回滚:软删除可以提供一种用户误操作的回滚机制,以便恢复被删除的数据。

使用硬删除的场景:

  1. 数据安全和隐私:如果您处理的是敏感数据或需要保护数据安全和隐私,硬删除可能更适合,以确保数据彻底从数据库中删除,不再可恢复。
  2. 数据容量和性能:如果您的数据库中存在大量的无用数据,硬删除可以释放存储空间,提高数据库的性能。

在实际应用中,可以根据数据的重要性、敏感性、合规性要求以及业务操作流程来确定是否使用软删除或硬删除。具体使用与否应根据您的业务需求和数据管理要求来决定。

相关推荐

  1. C#-实现删除

    2024-02-08 19:54:02       16 阅读
  2. Linux链接和连接什么

    2024-02-08 19:54:02       41 阅读
  3. 服务器防和什么

    2024-02-08 19:54:02       20 阅读
  4. 理解Linux中的文件删除链接和链接

    2024-02-08 19:54:02       15 阅读
  5. Macos 删除过期失效的链接symlink

    2024-02-08 19:54:02       43 阅读
  6. Linux链接的创建,删除,修改

    2024-02-08 19:54:02       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-08 19:54:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-08 19:54:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-08 19:54:02       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-08 19:54:02       20 阅读

热门阅读

  1. Golang 并发 Cond条件变量

    2024-02-08 19:54:02       33 阅读
  2. LeetCode LCP 30.魔塔游戏:贪心(优先队列)

    2024-02-08 19:54:02       38 阅读
  3. CSS基础

    CSS基础

    2024-02-08 19:54:02      36 阅读
  4. MySQL的DQL语言

    2024-02-08 19:54:02       26 阅读
  5. 差分隐私的基本概念

    2024-02-08 19:54:02       38 阅读
  6. c++的new与delete

    2024-02-08 19:54:02       34 阅读
  7. 如何使用LNMP让网站顺利工作?

    2024-02-08 19:54:02       28 阅读
  8. 红黑树,以及其在C++的set、map等数据结构中应用

    2024-02-08 19:54:02       28 阅读
  9. Nginx负载均衡详解

    2024-02-08 19:54:02       33 阅读