Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memeriksa Kewujudan Rekod dengan Cekap dan Memasukkan jika Tidak Hadir dalam Go?

Bagaimana untuk Memeriksa Kewujudan Rekod dengan Cekap dan Memasukkan jika Tidak Hadir dalam Go?

DDD
DDDasal
2024-12-12 15:27:13681semak imbas

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

Menyemak Kewujudan Rekod dan Memasukkan jika Tidak Hadir dalam Go

Dalam kod Go yang disediakan, pertanyaan dijalankan untuk mendapatkan jumlah pengguna dikira daripada kategori, sub_kategori dan jadual industri untuk kategori 'pembinaan'. Walau bagaimanapun, kod itu tidak menyemak sama ada rekod itu wujud sebelum melaksanakan pertanyaan.

Untuk menyemak sama ada rekod wujud dan memasukkannya jika tiada, pendekatan yang mungkin ialah:

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

Kod ini menyemak sama ada rekod wujud dengan melaksanakan pertanyaan dan menyimpan hasilnya dalam pembolehubah wujud. Jika rekod tidak wujud, ia terus memasukkannya ke dalam pangkalan data dengan melaksanakan pertanyaan lain.

Atas ialah kandungan terperinci Bagaimana untuk Memeriksa Kewujudan Rekod dengan Cekap dan Memasukkan jika Tidak Hadir dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn