Comment ajouter une ligne que si elle n'existe pas en base ? MERGE INTO
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
Code:
1 2
| INSERT INTO TABLE
VALUES (val1, val2, val3) |
Cela fonctionne très bien. (Jusque là rien d'étonnant ^^)
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 :
Code:
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 ) |
PS: je ne sais pas comment mieux intégrer le code à ce message, comment faire ?