登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-04 08:24:33 492浏览 收藏

大家好,今天本人给大家带来文章《如何防止我的整个表被删除》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

如果在下面的第一个查询中找不到我的 somemodel 的任何内容,删除语句将删除整个表

delete from somemodels

防止这种情况的最佳方法是什么?

someModel := &SomeModel{}

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

db.Delete(&someModel)

目前我没有检查模型是否确实被发现并从数据库返回,我知道我应该检查,但是最好的方法是什么?

检查它是否不为零?型号.id > 0 ?


解决方案


正如您所猜测的,它会删除整个表,因为找不到记录,即模型中没有任何内容可以用作条件,因此将条件留空并删除整个表。

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

例如:

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)
}

好了,本文到此结束,带大家了解了《如何防止我的整个表被删除》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>