J'ai un problème de conception lors de la création d'une procédure. Supposons que je doive mettre à jour toutes les lignes d'une table en utilisant les données des autres colonnes de la même ligne.Mise à jour via la fusion
Dites table1
a 3 colonnes A
, B
et C
et j'ai besoin de mettre à jour toutes les lignes comme C=A+B
. Je peux donc utiliser:
update table1 set C=A+B;
Mais je dois le faire en utilisant quelque chose comme ci-dessous:
merge tab1e1 using (some query) on (some condition)
when matched update
C=A+B
when not matched
null;
Est-il possible de le faire en manipulant « une requête » et « une condition »?
Pourquoi cela serait-il un problème? Vous pouvez simplement faire 'update set c = a + b' dans la clause' when matched'. En faire une fusion restreindra les lignes que vous mettez à jour - vous seul savez ce que 'une requête' et une certaine 'condition' doivent être, et pourquoi vous devez utiliser la fusion du tout? Je ne comprends pas quelle est votre véritable question ou ce sur quoi vous êtes bloqué. Un exemple concret pourrait aider, c'est plutôt vague. –
Ou voulez-vous dire que vous voulez toujours mettre à jour chaque ligne de la table; mais que vous voulez faire cela via une fusion de toute façon? Tellement que «quand correspond» est toujours vrai? Si oui, pourquoi? –
Merci pour la réponse rapide .. en fait je dois faire par fusion de toute façon. C'est une version super simplifiée d'une requête créée en cours d'exécution. C'est un scénario où la déclaration de fusion sera mise à jour toutes les lignes d'une table en utilisant des colonnes de lui-même – kamal