ホームページ >バックエンド開発 >Golang >Golang はデータベース レコードを効率的に確認し、必要に応じて挿入するにはどうすればよいでしょうか?

Golang はデータベース レコードを効率的に確認し、必要に応じて挿入するにはどうすればよいでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-16 09:43:11192ブラウズ

How Can Golang Efficiently Check for and Insert Database Records if Needed?

Golang を使用してレコードを効率的にチェックし、データベースに挿入する

このコード スニペットは、データベースに記録し、存在しない場合は Golang を使用して挿入します。このコードは、MySQL データベースへの接続を確立し、複数のテーブルにわたる特定の列の合計をチェックするクエリを実行します。

この機能を強化するには、レコードが存在するかどうかをチェックする if-else ブロックを追加します。別の SQL クエリを使用します。レコードがすでに存在する場合、コードは通常どおり処理されます。ただし、そうでない場合は、追加の INSERT ステートメントを開始してレコードをデータベースに挿入します。

変更されたコードは次のとおりです。

func main() {
    router := gin.New()
    router.Use(gin.Logger())
    router.Use(gin.Recovery())

    db, err := sql.Open("mysql", "root:password@tcp(gpstest.cksiqniek8yk.ap-south-1.rds.amazonaws.com:3306)/tech")
    if err != nil {
        fmt.Print(err.Error())
    }
    err = db.Ping()
    if err != nil {
        fmt.Print(err.Error())
    }

    rows, err := db.Query("select sum(usercount) as usercount from ( select count(*) as usercount from category where name = 'construction' union all  select count(*) as usercount from sub_category where name = 'construction'  union all  select count(*) as usercount from industry where name = 'construction' ) as usercounts;")

    // Check if record exists
    row := db.QueryRow("SELECT EXISTS(SELECT 1 FROM ...)")
    var exists bool
    if err := row.Scan(&exists); err != nil {
        return err
    }

    // Insert record if it doesn't exist
    if !exists {
        if err := db.Exec("INSERT ..."); err != nil {
            return err
        }
    }
}

この変更により、データベースは常にレコードが最初に存在しない場合でも、最新のデータ。

以上がGolang はデータベース レコードを効率的に確認し、必要に応じて挿入するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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