首页 >后端开发 >Golang >Go中如何高效检查记录是否存在,不存在则插入?

Go中如何高效检查记录是否存在,不存在则插入?

DDD
DDD原创
2024-12-12 15:27:13694浏览

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

此代码通过执行查询并将结果存储在存在变量中来检查记录是否存在。如果记录不存在,它将通过执行另一个查询将其插入数据库。

以上是Go中如何高效检查记录是否存在,不存在则插入?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn