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