Bonjour à tous,
J'ai une tache assez simple à faire, mais je ne vois pas quel est le moyen le plus simple et efficace d'y arriver.
C'est tout simple :
- J'ai une table T1 sur laquelle je fais des UPDATE en fonction d'un ID.
- Sauf que cette table ne contient pas forcément de ligne avec L'ID correspondant.
- Si la ligne n'existe pas, je voudrais faire plutôt un INSERT.
- Tout cela sans utiliser de procédure stockée. Uniquement en une requête SQL
Je suis sous Oracle 9i release 2
Et j'ai trouvé une fonction qui pourrait faire l'affaire : MERGE, dont la syntaxe est la suivante :
Mon souci est que cette fonction prend en compte 2 tables, et fait une comparaison entre les deux, dans le but de faire une sorte de synchro entre les deux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 MERGE INTO <table/view> USING <table/view/subquery> ON (condition) --update WHEN MATCHED THEN UPDATE SET column = (value/expr),.. WHERE (condition) | DELETE WHERE (condition) --insert WHEN NOT MATCHED THEN INSERT (column,..) VALUES (value/expr,..) WHERE (condition) --error log
Mais dans mon cas je n'ai qu'une seule table, sur laquelle je voudrais faire :
if(select ID FROM T1) then
UPDATE
else
INSERT
end if
Mais sans procédure stockée...
Est ce possible ?
Merci
Partager