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!