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
Libérer: 2024-10-26 19:24:29
original
1025 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal