go - 如何在删除函数中处理 GORM 错误?
问题描述
我有这个功能:
var db *gorm.DB
func DeleteCategory(id uint) error {
var category Category
category.ID = id
result := db.Delete(&category)
fmt.Println("result.Error: ", result.Error)
return result.Error
}
这个函数应该删除数据库中的行,它是,但是当我用相同的 id 多次调用这个函数时,我希望它error
在第二次调用时抛出消息,但它总是返回 nil:
result.Error: <nil>
*我正在使用 postgreSQL数据库
解决方案
尝试删除不存在的行不被SQL 标准视为错误。如果您需要返回错误,您应该检查该RowsAffected
字段。
func DeleteCategory(id uint) error {
c := Category{ID:id}
db := db.Delete(&c)
if db.Error != nil {
return db.Error
} else if db.RowsAffected < 1 {
return fmt.Errorf("row with id=%d cannot be deleted because it doesn't exist", id)
}
return nil
}
推荐阅读
- node.js - 无服务器离线 - 本地 dynamoDb 上的迁移不起作用
- java - JAVA - 在 excel (.csv) 中从列表创建格式化表格
- python - 网络抓取亚马逊价格的问题
- c++ - C++ UE4 - bool vs. uint8 : 1 vs. uint32 : 1 - 各自的优缺点?
- r - 子集由空行分隔的 R data.table
- spring-boot - 我们可以使 Spring JPA 规范与 EntityGraph 一起使用吗?
- android - com.google.firebase.database.DatabaseException:在类 android.view.animation.AccelerateDecelerateInterpolator 上找不到要序列化的属性
- python - 排序值和值高于 1 个熊猫
- java - 谷歌服务帐号授权错误
- php - 我包括 php 文件,但之后我的 css 和引导程序不起作用