使用数据库时,优雅地处理潜在错误至关重要。在 GORM 中,旨在从数据库中删除实体的删除函数会出现一个特定问题,即具有相同标识符的多个调用不会触发错误。
通过默认情况下,GORM 不会将尝试删除数据库中不存在的行视为错误。因此,在这种情况下,即使删除实体失败,Delete 函数也只会返回 nil。
此行为源于 GORM 遵循 SQL 标准的事实,它没有将删除不存在的行定义为错误。因此,当您尝试删除不存在的行时,GORM 本质上不会抛出错误。
如果您在尝试删除不存在的行时需要返回错误如果行不存在,您必须手动检查删除函数结果的 RowsAffected 字段。以下是修改代码的方法:
<code class="go">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 }</code>
在此修改后的代码中:
以上是如何确保在 GORM 中删除实体时未找到行时的错误处理?的详细内容。更多信息请关注PHP中文网其他相关文章!