Go 如何防止删除我的整个表

Go 如何防止删除我的整个表,go,go-gorm,Go,Go Gorm,如果在下面的第一个查询中找不到my someModel上的任何read,则delete语句将删除整个表 delete from somemodels 预防这种情况的最佳方法是什么 someModel := &SomeModel{} db.Where("some_id = ? and other_id = ?", someModel.UserId, someModel.Id).First(&someModel) db.Delete(&someModel) 目前我没有

如果在下面的第一个查询中找不到my someModel上的任何read,则delete语句将删除整个表

delete from somemodels
预防这种情况的最佳方法是什么

someModel := &SomeModel{}

db.Where("some_id = ? and other_id = ?", someModel.UserId, someModel.Id).First(&someModel)

db.Delete(&someModel)
目前我没有检查模型是否真的被发现并从数据库返回,我知道我应该检查,但最好的方法是什么


只需检查它是否为零?model.Id>0?

根据,需要检查主Id是否为空。我不确定您的模型是什么样子,但我想您应该检查
modle.ID
是否为空。

正如您所猜测的,它会删除整个表,因为找不到记录,也就是说,模型中没有可用作标准的内容,因此会将标准留空并删除整个表

您可以检查是否找到了记录,而无需检查模型本身

例如:

if !db.Where("some_id = ? and other_id = ?", someModel.UserId, someModel.Id).First(&someModel).RecordNotFound {
    db.Delete(&someModel)
}

if err := db.Where("some_id = ? and other_id = ?", someModel.UserId, someModel.Id).First(&someModel).Error; err != nil {
    if gorm.IsRecordNotFoundError(err) {
        // record not found
    } else {
        // something else went wrong
    }
} else {
    db.Delete(&someModel)
}