Gorm select 表里所有数据包括已经软删除的数据

发布时间: 2023-05-12 17:28:01 作者: 大象笔记

又写了一天的 bug ... 被 ORM 折腾死。

没关系,又活了一天,已经很厉害了。。。

Bug 的根源

一个设备信息管理系统的表,里面会自动给设备生成设备 ID。

格式:

编号的生成逻辑:

这个逻辑跑了很久都没有出问题,但是今天在写一个新系统时,我偷懒 copy 过来了。

然后,另一个 bug 导致几条设备信息被软删除 (gorm 默认是使用软删除)。

于是获取到的最新一条记录,实现并不是最新的记录,因为隐藏了被软删除的设备记录。而设备 ID 又加了唯一索引,于是就再也插不进新的设备信息了。。。

gorm Unscoped

解决方法是加上 Unscoped

db.Unscoped().Where("age = 20").Find(&users)

这样无论是软删除的,还是没删除的,都能获取到。

我是一名山东烟台的开发者,联系作者