Mise à jour de plusieurs lignes avec une clé primaire différente dans une requête dans PostgreSQL?

- Je mettre à jour autant de colonnes dans de nombreuses lignes de PostgreSQL 9.1. Je suis en train de le faire avec beaucoup de différents UPDATE requêtes, chacun qui travaille sur une autre ligne (basée sur la clé primaire):

UPDATE mytable SET column_a = 12, column_b = 6 WHERE id = 1;
UPDATE mytable SET column_a = 1, column_b = 45 WHERE id = 2;
UPDATE mytable SET column_a = 56, column_b = 3 WHERE id = 3;

Que j'ai à faire plusieurs milliers de ces requêtes.

Est-il de toute façon je peux "mise à jour en bloc" beaucoup de lignes d'une requête dans PostgreSQL? Si vous utilisez INSERTvous pouvez insérer plusieurs lignes à la fois: (INSERT INTO mytable (column_a, column_b) VALUES ( (12, 6), (1, 45) );), Est-il quelque chose comme ça pour UPDATE?

Quelque chose comme:

UPDATE mytable SET (id, column_a, column_b) FROM VALUES ( (1, 12, 6), (2, 1, 45), (3, 56, 3),  )

??

Les points importants est que chaque "VALEUR" n'est mis à jour une ligne (basé sur le WHERE id =). Chaque ligne aura de même, nombre fixe de colonnes qui doivent mettre à jour, mais chaque ligne ont des valeurs différentes pour chaque colonne, de sorte UPDATE mytable SET column_a = 12, column_b = 6 WHERE id IN (1, 2, 3); ne fonctionne pas.

source d'informationauteur Rory