首頁 > 後端開發 > Golang > 如何處理 GORM 的刪除功能中不存在的行?

如何處理 GORM 的刪除功能中不存在的行?

Patricia Arquette
發布: 2024-10-26 19:24:29
原創
1025 人瀏覽過

How to Handle Nonexistent Rows in GORM's Delete Function?

避免 GORM 刪除函數中的零錯誤

在 GORM 應用程式中,嘗試刪除不存在的行不會被識別為錯誤。為了確保正確的錯誤處理,必須檢查受影響的行數。

考慮以下 DeleteCategory 函數:

<code class="golang">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
}</code>
登入後複製

使用相同的 id 多次呼叫此函數不會產生錯誤,儘管第一次只刪除一行。這是因為 SQL 標準不認為刪除不存在的行是錯誤。

要修正此問題,請新增對 RowsAffected 欄位的檢查:

<code class="golang">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>
登入後複製

透過此修改,函數將傳回如果指定 id 的行不存在,則會出錯。

以上是如何處理 GORM 的刪除功能中不存在的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板