Go 如何防止删除我的整个表
如果在下面的第一个查询中找不到my someModel上的任何read,则delete语句将删除整个表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) 目前我没有
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)
}