317 votes

Oracle : Comment UPSERT (mise à jour ou insertion dans une table ?)

L’opération UPSERT met à jour ou insère une ligne dans une table, selon si la table possède déjà une ligne qui corresponde aux données :

Depuis Oracle n’a pas une déclaration UPSERT spécifique, ce qui est le meilleur moyen de faire cela ?

222voto

Mark Harrison Points 77152

La déclaration de fusionner fusionne les données entre deux tables. À l’aide de double nous permet d’utiliser cette commande.

116voto

Grommit Points 501

Le double exemple ci-dessus qui est en PL/SQL était super parce que je voulais faire quelque chose de similaire, mais je voulais que ce côté client... alors voici le code SQL, j’avais l’habitude d’envoyer une déclaration analogue direct de certains c#

Cependant, dans une perspective de c# cela fournissent à être plus lent que faire la mise à jour et voir si les lignes concernées est 0 et faire l’insertion s’il s’agissait.

68voto

Tony Andrews Points 67363

Une alternative à la fusion (la « voie de l’ancienne ») :

51voto

Brian Schmitt Points 4246

Une autre alternative sans le contrôle de l’exception :

32voto

test1 Points 21
<ol> <li>Insert si non existe</li> <li>mise à jour :</li> </ol> <pre> INSERT INTO mytable (id1, t1) Sélectionner 11, « x 1' de la double où NOT EXISTS (SELECT id1 FROM mytble WHERE id1 = 11) ; Mise à jour mytable SET t1 = « x1' WHERE id1 = 11 ; </pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X