ホームページ >バックエンド開発 >Golang >Go でレコードの存在を効率的に確認し、存在しない場合は挿入する方法

Go でレコードの存在を効率的に確認し、存在しない場合は挿入する方法

DDD
DDDオリジナル
2024-12-12 15:27:13693ブラウズ

How to Efficiently Check for Record Existence and Insert if Absent in Go?

レコードの存在を確認し、存在しない場合は Go に挿入

提供された Go コードでは、ユーザーの合計を取得するクエリが実行されます。カテゴリ「建設」のカテゴリ、サブカテゴリ、業界テーブルからのカウント。ただし、コードはクエリを実行する前にレコードが存在するかどうかをチェックしません。

レコードが存在するかどうかを確認し、存在しない場合はレコードを挿入するには、次のような方法が考えられます。

package main

import (
    "database/sql"
    "fmt"
    "os"

    "github.com/gin-gonic/gin"
)

func main() {
    router := gin.New()
    router.Use(gin.Logger())
    router.Use(gin.Recovery())
    dbUser := os.Getenv("DB_USER")
    dbPwd := os.Getenv("DB_PASSWORD")
    dbHost := os.Getenv("DB_HOST")
    dbPort := os.Getenv("DB_PORT")
    dbDatabase := os.Getenv("DB_NAME")
    db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", dbUser, dbPwd, dbHost, dbPort, dbDatabase))
    if err != nil {
        fmt.Print(err.Error())
    }
    err = db.Ping()
    if err != nil {
        fmt.Print(err.Error())
    }

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

    if !exists {
        query = "INSERT ...";
        if _, err = db.Exec(query); err != nil {
            return err
        }
    }
}

このコードは、クエリを実行し、結果をexists変数に保存することによって、レコードが存在するかどうかをチェックします。レコードが存在しない場合は、別のクエリを実行してデータベースへのレコードの挿入を開始します。

以上がGo でレコードの存在を効率的に確認し、存在しない場合は挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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