Lorsque je fais un MERGE dans Oracle SQL, comment puis-je mettre à jour les lignes qui ne correspondent pas à la SOURCE?
J'ai un main
base de données et un report
base de données, et j'ai besoin de synchroniser un tableau de main
en report
.
Toutefois, lorsqu'un élément est supprimé dans le main
base de données, je ne veux définir une IsDeleted
drapeau dans le report
base de données.
Ce qui est une manière élégante de faire cela?
Je suis actuellement en utilisant une instruction MERGE, comme ceci:
MERGE INTO report.TEST target
USING (SELECT * FROM main.TEST) source
ON (target.ID = source.ID)
WHEN MATCHED THEN
UPDATE SET (target... = source...)
WHEN NOT MATCHED THEN
INSERT (...) VALUES (source...)
;
La WHEN NOT MATCHED
déclaration me donne toutes les NOUVELLES valeurs de la main
mais je veux aussi mettre à jour toutes les ANCIENNES valeurs de report
.
Je suis en utilisant Oracle PL/SQL.
source d'informationauteur Scott Rippey
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec une mise à JOUR séparée déclaration
Je ne sais pas de toute façon à les intégrer dans votre instruction MERGE.
La réponse suivante est à de fusion de données dans le même tableau
Cette commande vérifie si
USER_ID
etUSER_NAME
sont appariés, si pas de correspondance puis il va insérer.