Maison  >  Article  >  développement back-end  >  Comment gérer les lignes inexistantes dans la fonction de suppression de GORM ?

Comment gérer les lignes inexistantes dans la fonction de suppression de GORM ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-27 10:26:30978parcourir

How to Handle Non-Existent Rows in GORM's Delete Function?

Gestion des erreurs dans la fonction de suppression de GORM

Lorsque vous travaillez avec des suppressions de bases de données à l'aide de GORM, il est crucial de réfléchir à la manière dont vous souhaitez gérer les suppressions de bases de données inexistantes. rangées. Par défaut, GORM ne génère pas d'erreur lors de la tentative de suppression d'une ligne inexistante. Au lieu de cela, le champ result.Error reste nul.

Pour modifier ce comportement et renvoyer une erreur pour les lignes inexistantes, vous devez inspecter le champ RowsAffected. Voici comment modifier votre fonction DeleteCategory :

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

Dans cette fonction modifiée :

  1. La méthode Delete de GORM est invoquée, attribuant le résultat à db.
  2. Si db.Error n'est pas nul, une erreur est renvoyée.
  3. Après avoir confirmé qu'il n'y a pas d'erreur générale, db.RowsAffected est vérifié. S'il est inférieur à 1, indiquant qu'aucune ligne n'a été affectée par l'opération de suppression, un message d'erreur personnalisé est renvoyé.
  4. Une valeur d'erreur nulle est renvoyée si la suppression de la ligne a réussi.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn