J'ai besoin de mettre à jour une table à partir d'une autre et j'ai besoin de mettre à jour toutes les colonnes. Outre la liste de toutes les colonnes de la SET
clause, existe-t-il un moyen de les mettre à jour simultanément? Comme ça:
update tableA
set * = tableB.*
from tableB where tableA.id = tableB.id
J'ai essayé en psql, ça ne marche pas. Je dois lister chaque colonne comme ceci:
update tableA
set c1 = tableB.c1, c2 = tableB.c2, ...
from tableB where tableA.id = tableB.id
tableB
est créé utiliser create .. like tableA
. Ils sont donc fondamentalement identiques. Et la raison pour laquelle je le fais est que je dois charger des données .csv dans une table temporaire tableB
, puis mettre à jour en tableA
fonction des nouvelles données dans tableB
. tableA
doit être verrouillé le moins possible et tableA
doit conserver son intégrité. Je ne suis pas sûr que «supprimer puis insérer» serait une bonne option?