Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann die Fehlerbehandlung beim Löschen von Entitäten in GORM sichergestellt werden, wenn Zeilen nicht gefunden werden?

Wie kann die Fehlerbehandlung beim Löschen von Entitäten in GORM sichergestellt werden, wenn Zeilen nicht gefunden werden?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 18:02:29442Durchsuche

How to Ensure Error Handling During Entity Deletion in GORM when Rows are Not Found?

Fehlerbehandlung beim Löschen von Entitäten in GORM

Bei der Arbeit mit einer Datenbank ist es entscheidend, potenzielle Fehler ordnungsgemäß zu behandeln. In GORM stellt die Löschfunktion, die eine Entität aus der Datenbank entfernen soll, ein spezifisches Problem dar, bei dem mehrere Aufrufe mit derselben Kennung keinen Fehler auslösen.

Das Standardverhalten

Von Standardmäßig betrachtet GORM den Versuch, eine nicht vorhandene Zeile in der Datenbank zu löschen, nicht als Fehler. Daher gibt die Löschfunktion in solchen Fällen einfach Null zurück, selbst wenn die Entität nicht entfernt werden kann.

Identifizierung der Grundursache

Dieses Verhalten ist auf die Tatsache zurückzuführen, dass GORM dem SQL-Standard folgt. was das Löschen einer nicht vorhandenen Zeile nicht als Fehler definiert. Daher gibt GORM nicht automatisch einen Fehler aus, wenn Sie versuchen, eine nicht vorhandene Zeile zu löschen.

Benutzerdefinierte Fehlerbehandlung

Wenn Sie beim Versuch, eine Zeile zu löschen, einen Fehler zurückgeben müssen Wenn eine Zeile nicht vorhanden ist, müssen Sie das Feld „RowsAffected“ des Ergebnisses der Funktion „Löschen“ manuell überprüfen. So können Sie Ihren Code ändern:

<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>

In diesem geänderten Code:

  • Wir prüfen zunächst, ob bei der Ausführung der Löschfunktion weitere Fehler aufgetreten sind.
  • Wenn db.Error Null ist, überprüfen wir das Feld „RowsAffected“. Wenn der Wert kleiner als 1 ist, bedeutet dies, dass keine Zeile betroffen war, was darauf hinweist, dass die Zeile mit der angegebenen ID nicht existiert.
  • In diesem Fall geben wir eine benutzerdefinierte Fehlermeldung zurück, um den Fehler des Vorgangs anzuzeigen.

Das obige ist der detaillierte Inhalt vonWie kann die Fehlerbehandlung beim Löschen von Entitäten in GORM sichergestellt werden, wenn Zeilen nicht gefunden werden?. 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