IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Probleme Merge a cause du UPDATE WHERE


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut Probleme Merge a cause du UPDATE WHERE
    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

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    le DBLink n'est pas autorisé avec MERGE. Tu as les vue matérialisées pour faire la réplication en principe

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Mon dblink fonctionne très bien et la réplication de mes tables entre mes 2 bases aussi. Ce n'est pas le dblink qui pose problème

    Merci quand meme pour ton post

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    je pensais à cette erreur : ORA-02064

    mais... sont-ce mes yeux où il n'y a pas de a3.date_modif dans ta requête ?

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    je pensais à cette erreur : ORA-02064
    mais... sont-ce mes yeux où il n'y a pas de a3.date_modif dans ta requête ?
    J'ai deja eu l'erreur ORA-02064 mais c'est quand j'avais un probleme de dblink, maintenant je n'ai pu cette erreur

    Mon erreur c'est:
    SQL Error: ORA-00904: "A3"."DATE_MODIF": invalid identifier
    http://ora-00904.ora-code.com/

    Je n'ai pas de A3.DATE_MODIF! Je ne sais pas pourquoi il affiche ça comme message d'erreur

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    à mon avis tu regardes tout simplement pas la bonne requête... ou alors tu t'es planté dans le copier/coller

Discussions similaires

  1. [SQL ds VBA] Probleme de date ds un UPDATE
    Par robin des bulles dans le forum Access
    Réponses: 8
    Dernier message: 20/06/2006, 10h37
  2. Probleme de requete de suppression : clause Where
    Par cnguyen dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/05/2006, 18h14
  3. Réponses: 1
    Dernier message: 15/05/2006, 13h48
  4. [Oracle 10g]probleme avec une CONSTRAINT sur UPDATE
    Par Battosaiii dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/04/2006, 19h05
  5. Probleme de conception pour un update Oracle!
    Par vempiria dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/09/2005, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo