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 :

Replication de donnée et table mutante


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 98
    Par défaut Replication de donnée et table mutante
    Bonjour,

    J'ai sur mes tables un trigger pour l'auto_increment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE   SEQUENCE SEQ_C_PORT		INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE CACHE 10;
     
    CREATE   TRIGGER TRIG_C_PORT BEFORE INSERT ON C_PORTFOLIO FOR EACH ROW 
    	BEGIN
    		SELECT SEQ_C_PORT.NEXTVAL INTO :NEW.C_PORT_CODE FROM DUAL;
    	END;
    /
    Et un trigger de replication:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TRIGGER REPLIC_C_PORT BEFORE UPDATE OR INSERT ON C_PORT
    FOR EACH ROW
    BEGIN
    INSERT INTO C_PORT@HISTO.ORDI5 
    	(PORT_CODE, 
    	PORT_NAME, 
    	PORT_CURRENCY, 
    	CLIENT_TEL, 
    	CLIENT_CODE)
    	VALUES 
    	(:NEW.PORT_CODE, :NEW.PORT_NAME, :NEW.PORT_CURRENCY, :NEW.CLIENT_TEL, :NEW.CLIENT_CODE);
    END;
    /
    L'enchainement de ces deux triggers provoquent une erreur de table mutante venant du trigger de replication (le deuxieme).

    Existe t'il un moyen de passer outre ce probleme ?
    S'agit il d'un mauvais emploi de :NEW ?
    Le but etant d'avoir deux base totalement synchronisées, existe t'il un autre moyen d'effectuer cela ?

  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
    pourquoi ne pas utiliser une vue matérialisée ?

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 98
    Par défaut
    parceque je ne sais pas comment faire...
    je me renseigne, mais si tu as le temp de m'en dire un peu plus...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    354
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 354
    Par défaut
    Indémndamment du problème, si l'application est modifiable alors il faut enlever le premier trigger et utiliser la séquence dans l'application directement. D'un autre côté, le deuxième trigger doit être after et non before.

  5. #5
    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
    Citation Envoyé par Michel SALAIS Voir le message
    D'un autre côté, le deuxième trigger doit être after et non before.
    ha oui, en effet

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 98
    Par défaut
    Meme avec le deuxieme trigger en AFTER, ca provoque une erreur de table mutante...

  7. #7
    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
    c'est pas le DBLink qui serait erroné par hasard ? Parce que là ça réagit comme si C_PORTFOLIO@HISTOVOT.HEGOA5 et C_PORTFOLIO étaient les mêmes tables

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 98
    Par défaut
    Merci beaucoup.
    En fait tu m'as fais remarqué que dans mon script de creation de la table histovot, j'avais laissé les triggers de replication...

    Shame on me shame on me

    ------------

    Autre question:
    Existe t'il des outils de developpement gratuits pour oracle avec une interface graphique ??
    Parceque passer sans cesse d'un editeur de texte a la ligne de commande me provoque souvent de erreurs du genre de celle ci...

Discussions similaires

  1. Réponses: 12
    Dernier message: 19/08/2006, 20h53
  2. Réponses: 12
    Dernier message: 19/08/2006, 20h53
  3. replication de données sous oracle
    Par kanko dans le forum Oracle
    Réponses: 1
    Dernier message: 11/10/2005, 10h31
  4. [Strategie]Pb recup données grosse table
    Par zach dans le forum JDBC
    Réponses: 32
    Dernier message: 28/01/2005, 15h08
  5. sauvegarde des données des tables
    Par tomm dans le forum Bases de données
    Réponses: 18
    Dernier message: 27/04/2004, 21h29

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