Bonjour,
J'utilise la version Oracle 10g.
J'ai créé plusieurs requetes SQL en utilisant des MERGE pour répliquer des tables d'une base à une autre.
Tout fonctionne bien mais pour le MERGE ci dessous, je rencontre des difficultés:
Voici l'erreur que j'ai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 MERGE INTO ADM_LIBELLECONTINENT@mo2fo TO_TABLE USING (select LIBELLE_CONTINENT_ID, LIBELLE, DATE_MODIF, CODE_CONTINENT_FK from OKAIDI.ADM_LIBELLECONTINENT) FROM_TABLE ON (TO_TABLE.LIBELLE_CONTINENT_ID=FROM_TABLE.LIBELLE_CONTINENT_ID) WHEN MATCHED THEN UPDATE SET TO_TABLE.LIBELLE=FROM_TABLE.LIBELLE, TO_TABLE.DATE_MODIF=FROM_TABLE.DATE_MODIF , TO_TABLE.CODE_CONTINENT_FK=FROM_TABLE.CODE_CONTINENT_FK WHERE (TO_TABLE.DATE_MODIF < FROM_TABLE.DATE_MODIF) WHEN NOT MATCHED THEN INSERT (TO_TABLE.LIBELLE_CONTINENT_ID, TO_TABLE.LIBELLE, TO_TABLE.DATE_MODIF, TO_TABLE.CODE_CONTINENT_FK) VALUES (FROM_TABLE.LIBELLE_CONTINENT_ID, FROM_TABLE.LIBELLE, FROM_TABLE.DATE_MODIF, FROM_TABLE.CODE_CONTINENT_FK);
SQL Error: ORA-00904: "A3"."DATE_MODIF": invalid identifier
Si j'enleve la clause WHERE(TO_TABLE.DATE_MODIF<FROM_TABLE.DATE_MODIF), mon MERGE fonctionne et la réplication a bien lieu.
Cependant je veux éffectuer la modification uniquement sur les lignes ou DATE_MODIF est plus petite sur ma table TO_TABLE que sur ma table FROM_TABLE. J'ai donc besoin de cette clause!!
Comment résoudre mon problème?
NB:@mo2fo est un dblink entre mes 2 bases de données
Ma colonne DATE_MODIF existe dans mes 2 tables
Merci pour votre aide
Cordialement Philippe
Partager