Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit nicht vorhandenen Zeilen in der Löschfunktion von GORM um?

Wie gehe ich mit nicht vorhandenen Zeilen in der Löschfunktion von GORM um?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-26 19:24:29946Durchsuche

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

Vermeiden von Nullfehlern in der Löschfunktion von GORM

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn