Je peux utiliser CASE
pour choisir les colonnes à afficher dans une SELECT
requête (Postgres), comme ceci:
SELECT CASE WHEN val = 0 THEN column_x
WHEN val = 1 THEN column_y
ELSE 0
END AS update, ...
Est-ce que quelque chose de similaire est possible lors de l'exécution d'une UPDATE
requête dans Postgres (c'est-à-dire choisir les colonnes à mettre à jour)? Je suppose que non, car je n'ai rien trouvé à ce sujet, mais peut-être que quelqu'un a une alternative intelligente (en plus d'utiliser une procédure ou de mettre à jour chaque colonne en utilisant un CASE
pour déterminer si la valeur de la colonne doit être affectée à une nouvelle valeur ou simplement réaffecter l'existant valeur). S'il n'y a pas d'alternative facile, je l'accepterai bien sûr comme réponse également.
Information supplémentaire : dans mon cas, j'ai 14 colonnes potentielles qui peuvent être mises à jour, une seule étant mise à jour par ligne correspondante (le tableau à mettre à jour est joint à un autre dans la requête). Le nombre de lignes à mettre à jour variera très probablement, pourrait être des dizaines ou des centaines. Je pense que des indices sont en place pour les conditions d'adhésion.