ホームページ  >  記事  >  バックエンド開発  >  GORM の削除関数で存在しない行を処理するにはどうすればよいですか?

GORM の削除関数で存在しない行を処理するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 19:24:29946ブラウズ

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

GORM の削除関数での Nil エラーの回避

GORM アプリケーションでは、存在しない行を削除しようとしてもエラーとして認識されません。適切なエラー処理を保証するには、代わりに影響を受ける行の数を検査することが重要です。

次の DeleteCategory 関数を考えてみましょう:

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

同じ ID でこの関数を複数回呼び出しても、最初に 1 行しか削除しなかったにもかかわらず、エラーが発生しました。これは、SQL 標準では、存在しない行の削除はエラーとはみなされないためです。

これを修正するには、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>

この変更により、関数は次の値を返します。指定された ID の行が存在しない場合はエラーになります。

以上がGORM の削除関数で存在しない行を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。