Maison > développement back-end > Golang > Comment effectuer des mises à jour groupées sur plusieurs lignes dans PostgreSQL avec Go ?

Comment effectuer des mises à jour groupées sur plusieurs lignes dans PostgreSQL avec Go ?

Susan Sarandon
Libérer: 2024-12-11 06:14:10
original
737 Les gens l'ont consulté

How to Perform Multi-Row Bulk Updates in PostgreSQL with Go?

Mises à jour groupées sur plusieurs lignes dans PostgreSQL avec Go

Lorsque vous travaillez avec de grands ensembles de données, il est souvent nécessaire de mettre à jour plusieurs lignes dans une table de base de données en une seule opération. Cela peut optimiser les performances et réduire la complexité du code. Dans PostgreSQL, les mises à jour groupées peuvent être réalisées à l'aide de différentes approches.

Une approche consiste à utiliser une table dérivée pour construire un ensemble de valeurs à mettre à jour. En utilisant la clause FROM, vous pouvez spécifier les valeurs de chaque ligne qui doit être mise à jour. Par exemple :

UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM (VALUES (1, 'FINISH', 1234),
                 (2, 'UNFINISH', 3124)
         ) v(id, column_a, column_b)
WHERE v.id = t.id;
Copier après la connexion

La table dérivée v contient les paires de (id, column_a, column_b) représentant les mises à jour pour chaque ligne. L'instruction UPDATE utilise ensuite la clause WHERE pour faire correspondre les valeurs d'identifiant de v avec celles de la table cible t.

Dans Go, vous pouvez exécuter cette requête à l'aide d'une instruction préparée :

const updateBulkSQL = `
UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM (VALUES (, , ),
                 (, , )
         ) v(id, column_a, column_b)
WHERE v.id = t.id;
`

func main() {
    db, err := sql.Open("postgres", "")
    if err != nil {
        // Handle error
    }

    stmt, err := db.Prepare(updateBulkSQL)
    if err != nil {
        // Handle error
    }

    _, err = stmt.Exec(1, "FINISH", 1234, 2, "UNFINISH", 3124)
    if err != nil {
        // Handle error
    }
}
Copier après la connexion

Cette approche fournit un moyen concis et efficace d'effectuer des mises à jour groupées dans PostgreSQL, vous permettant de mettre à jour plusieurs lignes en une seule requête sans avoir à exécuter des requêtes distinctes pour chaque ligne.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal