Maison >développement back-end >Golang >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 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 19:24:291019parcourir

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

Éviter les erreurs nulles dans la fonction de suppression de GORM

Dans une application GORM, tenter de supprimer une ligne inexistante n'est pas reconnu comme une erreur. Pour garantir une bonne gestion des erreurs, il est essentiel d'inspecter le nombre de lignes concernées.

Considérez la fonction DeleteCategory suivante :

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

L'appel de cette fonction plusieurs fois avec le même identifiant ne produit pas une erreur, malgré la suppression d'une seule ligne la première fois. En effet, le standard SQL ne considère pas la suppression de lignes inexistantes comme une erreur.

Pour rectifier cela, ajoutez une vérification du champ RowsAffected :

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

Avec cette modification, la fonction retournera une erreur si la ligne avec l'identifiant spécifié n'existe pas.

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