In einer GORM-Anwendung wird der Versuch, eine nicht vorhandene Zeile zu löschen, nicht als Fehler erkannt. Um eine ordnungsgemäße Fehlerbehandlung sicherzustellen, ist es wichtig, stattdessen die Anzahl der betroffenen Zeilen zu überprüfen.
Betrachten Sie die folgende Funktion „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>
Der mehrmalige Aufruf dieser Funktion mit derselben ID führt nicht zu einem Ergebnis ein Fehler, obwohl beim ersten Mal nur eine Zeile gelöscht wurde. Dies liegt daran, dass der SQL-Standard das Löschen nicht vorhandener Zeilen nicht als Fehler betrachtet.
Um dies zu beheben, fügen Sie eine Prüfung für das Feld „RowsAffected“ hinzu:
<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>
Mit dieser Änderung kehrt die Funktion zurück ein Fehler, wenn die Zeile mit der angegebenen ID nicht existiert.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht vorhandenen Zeilen in der Löschfunktion von GORM um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!