使用資料庫時,優雅地處理潛在錯誤至關重要。在 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中文網其他相關文章!