首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何恢复使用gorm deletedAt软删除的数据

gorm是一个Go语言的ORM库,它提供了方便的数据库操作接口。gorm的deletedAt字段是用于实现软删除功能的,当删除一条数据时,gorm会将该数据的deletedAt字段设置为当前时间,而不是真正地从数据库中删除数据。

要恢复使用gorm deletedAt软删除的数据,可以按照以下步骤进行操作:

  1. 首先,需要在gorm模型结构体中定义deletedAt字段,并使用gorm.Model嵌入结构体,以便自动添加IDCreatedAtUpdatedAt等字段。
代码语言:txt
复制
type User struct {
    gorm.Model
    Name      string
    DeletedAt gorm.DeletedAt `gorm:"index"`
}
  1. 使用gorm的Unscoped方法查询被软删除的数据。Unscoped方法会忽略DeletedAt字段的限制条件,返回所有数据,包括软删除的数据。
代码语言:txt
复制
var user User
db.Unscoped().Where("name = ?", "John").First(&user)
  1. 如果找到了被软删除的数据,可以通过调用Unscoped方法的Restore函数来恢复数据。Restore函数会将DeletedAt字段设置为零值,即恢复为未删除状态。
代码语言:txt
复制
db.Unscoped().Model(&user).Restore()
  1. 如果需要永久删除软删除的数据,可以使用Unscoped方法的Delete函数。Delete函数会从数据库中永久删除数据,包括软删除的数据。
代码语言:txt
复制
db.Unscoped().Delete(&user)

需要注意的是,gorm的软删除功能需要在数据库表中添加一个名为deleted_at的字段,并将其类型设置为datetimetimestamp,以便存储删除时间。

推荐的腾讯云相关产品:腾讯云数据库MySQL、腾讯云云服务器CVM。

  • 腾讯云数据库MySQL:提供高性能、可扩展的MySQL数据库服务,支持自动备份、容灾、监控等功能。详情请参考:腾讯云数据库MySQL
  • 腾讯云云服务器CVM:提供弹性、安全、稳定的云服务器,可满足各种规模的应用需求。详情请参考:腾讯云云服务器CVM
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 如何使用DiskGenius恢复删除文件?

    好消息是,很多误删除情况,我们可以使用数据恢复工具将删除文件找回来。本文将详细介绍如何使用恢复软件来找回删除文件。为什么删除文件还可以恢复呢?...至此,被删除文件是有可能恢复,我们只需要使用数据恢复工具扫描一下,就能够找到丢失文件。不过,如果文件被删除后,又向硬盘存入了文件,那有可能会将丢失文件覆盖掉,导致文件无法恢复。...今天小编要介绍如果利用文件恢复功能找回误删除文件。步骤一、下载并运行DiskGenius软件。注意不要将软件保存到丢失了数据硬盘分区,避免产生数据覆盖。...总之,恢复删除文件操作比较简单,使用数据恢复工具自己在家就可以解决问题,省事省力,并且能够更好地保护个人隐私。...最后,小编提醒大家,平时要做好数据备份工作,并且删除文件时候要认真确认,尽量避免数据丢失问题。

    44360

    恢复删除数据

    ,成功把删除大部分数据找回来了,我数据恢复过程如下。...安装恢复软件 1、epel 仓库安装 如果我们源里面添加了 epel 仓库的话,我们可以直接使用下面的命令安装。...我们找到了最终删除数据目录 upload extundelete /dev/sda5 --inode 24904454 ? 我们可以看到标称 Deleted,这些数据就是我们要进行恢复数据。...,恢复命令参数,表示恢复节点“ino”文件,恢复文件会自动放在当前目录下RESTORED_FILES文件夹中,使用节点编号作为扩展名。...在数据删除之后,首先要卸载被删除数据所在磁盘或是分区,如果是系统根分区遭到误删除,就需要进入单用户模式下,将根分区以只读方式挂载。

    1.7K30

    GORM V2 写操作

    01 概念 在项目开发中,数据库写操作包含新增、删除和修改,使用 GORM V2 可以更加安全和便捷进行写操作。...默认值 可以使用 GORM 标签 default 设置默认值,插入数据时,设置默认值会被用于填充值为零值字段。 需要注意是,如果默认值本身是数据类型零值,将不会被保存到数据库。...对于数据库表设置默认值字段,需要预先在声明模型 struct 字段上使用标签 default 设置默认值,否则会插入该字段数据类型零值。...删除 如果模型包含 gorm.DeletedAt 字段,将会启用删除删除是指不会真的删除记录,而是会将 DeletedAt 字段设置为当前时间,并且被删除记录,不可以通过正常查询操作获取。...如果需要查询被删除记录,需要使用 Unscoped 方法。 永久删除 永久删除记录,也需要使用 Unscoped 方法。 gormDB.Unscoped().Where("id = ?"

    2.7K10

    Gorm

    自动迁移仅仅会创建表,缺少列和索引,并且不会改变现有列类型或删除使用列以保护数据。...int64 `gorm:"column:age_of_the_beast"` // 设置列名为`age_of_the_beast` } 外键 属于关系 默认使用关联属性类型主键作为关联外键,关联属性类型...,把它Email赋值给emails db.Model(&user).Related(&emails) 多对多 User包含并属于多个languages,使用user_languages表连接,默认使用两个表..., "%jinzhu%") 删除 如果模型有DeletedAt字段,它将自动获得删除功能! 那么在调用Delete时不会从数据库中永久删除,而是只将字段DeletedAt值设置为当前时间。...// 查找删除记录 db.Unscoped().Where("age = 20").Find(&users) // 永久删除 db.Unscoped().Delete(&user)

    29930

    如何从 SQL Server 恢复删除数据

    在我使用 SQL Server 这些年里,最常见问题之一一直是“我们如何恢复删除记录?” 现在,从 SQL Server 2005 或更高版本恢复删除数据非常容易。...解释: 它是如何工作?让我们一步一步地看一下。该过程需要七个简单步骤: 步骤1: 我们需要从sql server中获取已删除记录。...通过使用标准 SQL Server 函数fn_blog,我们可以轻松获取所有事务日志(包括已删除数据)。但是,我们只需要从事务日志中选定删除记录。...之后,我们需要使用此代码片段来获取列数据,如列名称、列大小、精度、小数位数,最重要是叶空位(以确保列是固定数据(=1)) 表。...现在我们需要根据定义为 [ System_type_id ] 数据类型转换数据。每种类型都有不同 数据转换机制。 步骤7: 最后,我们对数据进行数据透视表,您将看到结果。删除数据又回来了。

    17210

    电脑删除文件如何恢复 轻松恢复删除文件

    今天,小编继续教大家怎么恢复删除电脑数据。我们都知道,当文件数据出现异常时,文件都会打不开,或者无法正常使用,这虽然没有被直接删除了文件,但是文件出现了无法使用情况,也和数据丢失差不了什么了。...如果你遇到这类问题,先不要着急去处理电脑里面的文件数据,可以先进行电脑数据恢复,之后再尝试能不能正常使用。毕竟现在很多数据丢失了也是可以被恢复。...下面,我就在这里和大家介绍一下数据恢复方法操作,帮助您解决电脑数据恢复难题。在这里以数据恢复软件-超级兔子数据恢复举例操作,下面是操作过程,有需要了解朋友可以一起来看看。...1.在超级兔子官网下载数据恢复软件到电脑,打开软件后在场景模式里面选择误删除文件恢复模式。2.选择被删除文件前存放分区,这里选择桌面为例,完成后点击开始扫描。...3.超级兔子数据恢复开始扫描文件,请耐心等待。4.扫描完成后,把需要恢复文件勾选上,然后点击右下角立即恢复

    22810

    Gorm 数据库表迁移与表模型定义

    ps 1.3 创建数据库 首先,使用Datagrip 链接数据,接着在使用GORM前手动创建数据库db1,执行如下SQL: CREATE DATABASE db1; 二、AutoMigrate介绍与使用...2.2 AutoMigrate 基本使用Gorm 中,你可以通过调用 db.AutoMigrate 方法来进行数据库表自动迁移。...:"autoUpdateTime:false"` } 4.4.3 DeletedAt // 只要使用gorm.Model结构体继承,DeletedAt DeletedAt `gorm:"index"`...字段 // 执行删除是其实是update语句,并没有真正删除 五、模型定义高级选项与标签 5.1 字段级权限控制 可导出字段在使用 GORM 进行 CRUD 时拥有全部权限,此外,GORM 允许您用标签控制字段级别的权限...在使用指定数据数据类型时,它需要是完整数据数据类型,如:MEDIUMINT UNSIGNED not NULL AUTO_INCREMENT serializer 指定如何数据序列化和反序列化到数据库中序列化程序

    36310

    数据恢复如何恢复Linux中意外删除Oracle和MySQL数据

    张乐奕 云和恩墨副总经理,Oracle ACE总监,ACOUG 联合创始人 没有删除数据DBA职业生涯是不完整删除数据库还能幸存DBA一定是订阅了“Oracle”公众号。...昨晚有朋友在微信群中求助讨论,误删除了一个MySQL数据库,整个恢复过程和以下文章中提到步骤完全相同,只要MySQL主进程还没有退出,从文件句柄中可以恢复文件最终挽回损失。...让我们完整再复习一下这篇文章步骤,一定要记住这种方法: 今天有客户数据库意外被删除了整个目录中数据文件,操作系统级别的删除,然而幸运是这个数据库没有崩溃,仍然处于 open 状态时候,客户就发现了问题...在 Linux 下大致重新演示一下恢复过程,恢复步骤与数据库版本没有太大关系,与操作系统不同会有所不同。 1. 在数据库 open 时候,直接删除 users 表空间中数据文件。 2....操作系统,ls 命令不会有如此清晰显示,为了在 Solaris 系统中确认哪个句柄对应哪个文件,则需要使用 lsof 程序。

    4.1K60

    Gorm实战,轻松掌握数据库增删改查技巧!

    Gorm实战,轻松掌握数据库增删改查技巧! CRUD通常指数据增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。...七、Delete(删除) 7.1 删除一条记录 删除一条记录时,删除对象需要指定主键,否则会触发 批量 Delete,例如: // student ID 是 `1`--->删除 db.First(...如果您模型包含了一个 gorm.deletedat 字段(gorm.Model 已经包含了该字段),它将自动获得删除能力!...拥有删除能力模型调用 Delete 时,记录不会被数据库。但 GORM 会将 DeletedAt 置为当前时间, 并且你不能再通过普通查询方法找到该记录。...,您也可以这样启用删除特性: type Student struct { ID int Deleted gorm.DeletedAt Name string } 查找被删除记录

    3.3K20
    领券