Maison >développement back-end >Golang >Comment Golang peut-il rechercher et insérer efficacement des enregistrements de base de données si nécessaire ?

Comment Golang peut-il rechercher et insérer efficacement des enregistrements de base de données si nécessaire ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 09:43:11186parcourir

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

Utiliser Golang pour vérifier et insérer efficacement des enregistrements dans une base de données

Cet extrait de code explore un scénario dans lequel nous voulons garantir l'existence d'un enregistrez-le dans une base de données et insérez-le s'il n'est pas présent en utilisant Golang. Le code établit une connexion à une base de données MySQL et exécute une requête pour vérifier la somme d'une colonne spécifique sur plusieurs tables.

Pour améliorer cette fonctionnalité, nous pouvons ajouter un bloc if-else pour vérifier si l'enregistrement existe en utilisant une requête SQL distincte. Si l'enregistrement existe déjà, le code se déroule comme d'habitude. Cependant, si ce n'est pas le cas, il initie une instruction INSERT supplémentaire pour insérer l'enregistrement dans la base de données.

Voici le code modifié :

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

Cette modification garantit que la base de données a toujours les dernières données, même si un enregistrement est initialement absent.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn