Merge mais avec une seule table : possible?
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 :
Code:
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 |
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.
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