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:

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);
Voici l'erreur que j'ai:

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