Bonjour
Je suis sous Oracle 10g.
J'ai une table TABLE avec trois champs champs1, champs2 et champs3 Il n'y a pas de clef primaire.
Cependant, il n'existe qu'une ligne pour champs1- champs2 .
Par exemple si champs1 vaut 1000 et champs2 vaut 50, val3 ne pourra avoir qu'une seule valeur.
Quand je fais la commande suivante
Cela fonctionne très bien. (Jusque là rien d'étonnant ^^)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO TABLE VALUES (val1, val2, val3)
Je souhaiterai faire l'insertion que si la paire val1-val2 n'est pas déjà présente en base. Dans ce cas, je ferai un update.
J'ai fait quelque recherches et il semble que je doive passer par "MERGE INTO".
SAUF que je n'y arrive pas. Vous pourriez m'éclairer svp ?
J'ai testé ceci mais ça ne fonctionne pas :
PS: je ne sais pas comment mieux intégrer le code à ce message, comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 MERGE INTO TABLE dest USING( SELECT CHAMPS1, CHAMPS2, CHAMPS3 FROM TABLE) src ON( dest.CHAMPS1= src.CHAMPS1) AND (dest.CHAMPS2= src.CHAMPS2) AND (dest.CHAMPS3 = src.CHAMPS3 ) WHEN MATCHED THEN UPDATE SET dest.CHAMPS3 = src.CHAMPS3 WHEN NOT MATCHED THEN INSERT( dest.CHAMPS1, dest.CHAMPS2, dest.CHAMPS3 ) VALUES(src.CHAMPS1, src.CHAMPS2, src.CHAMPS3 )
Partager