Maison >développement back-end >Golang >Comment puis-je mettre à jour efficacement plusieurs lignes dans PostgreSQL à l'aide d'une seule requête ?

Comment puis-je mettre à jour efficacement plusieurs lignes dans PostgreSQL à l'aide d'une seule requête ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-05 14:24:11181parcourir

How Can I Efficiently Bulk Update Multiple Rows in PostgreSQL Using a Single Query?

Mise à jour groupée de plusieurs lignes avec une seule requête PostgreSQL

La mise à jour de plusieurs lignes dans une base de données PostgreSQL à l'aide de Go peut être réalisée efficacement avec un seul SQL déclaration. Cette approche offre un moyen pratique de mettre à jour plusieurs enregistrements en une seule fois, réduisant ainsi le nombre de requêtes requises et améliorant les performances.

Pour effectuer des mises à jour groupées, nous pouvons utiliser une table dérivée, qui est une table temporaire créée dans le portée d’une requête. Cela nous permet de spécifier les valeurs des lignes à mettre à jour. Voici comment procéder :

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;

Dans cet exemple, nous créons une table dérivée nommée v avec trois colonnes : id, column_a et column_b. Nous fournissons des valeurs pour deux lignes, qui représentent les mises à jour que nous souhaitons effectuer. La clause WHERE fait correspondre la colonne id de la table dérivée avec la colonne id de la table que nous mettons à jour (t).

Cette approche facilite l'ajout de lignes supplémentaires à mettre à jour, simplement en ajoutant plus de lignes à la table dérivée. Ceci est moins sujet aux erreurs que l’écriture de plusieurs instructions de mise à jour individuelles.

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