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

Oracle Discussion :

[TRIGGER] replication synchrone de deux tables sur 2 bases differents


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 14
    Points : 14
    Points
    14
    Par défaut [TRIGGER] replication synchrone de deux tables sur 2 bases differents
    Bonjour tout le monde

    Je cherche à créer deux bases de données(DBMIAGE et DBXP) contenant des tables communes dont les données doivent etre identiques.

    J'ai d'abord créer des liens dans les deux sens :

    -de dbmiage à dbxp
    create database link dbxp connect to truc identified by truc using 'dbxp';

    -de dbxp à dbmiage
    create database link dbmiage connect to truc identified by truc using 'dbmiage';



    J'ai ensuite utiliser lancer des triggers dans les deux bases je vous mets celle de dbmiage ->dbxp)

    create or replace trigger tr_copie_usine
    after insert or update or delete on "usine"
    For each row
    begin
    if inserting then
    insert into "usine"@dbxp values
    (:new."numero_usine",
    :new."adresse_usine");
    elsif updating then
    update "usine"@dbxp set
    "adresse_usine"=:new."adresse_usine"
    where "numero_usine"=:new."numero_usine";
    elsif deleting then
    Delete from "usine"@dbxp
    where "numero_usine"=:old."numero_usine";
    else raise_application_error
    (-20001, 'erreur declencheur tr_copie_usineDBMIAGE');
    end if;
    End;
    /



    Le probleme c'est que ca crée des conflits car elles se modifieraient en permanence.

    Donc j'ai rajouter des conditions pour essayer d'eviter cela :

    create or replace trigger tr_copie_usine
    after insert or update or delete on "usine"
    For each row
    begin
    if inserting then
    (when not exists
    (select "numero_usine"
    from "usine"@dbxp O
    where O."numero_usine"=:new."numero_usine")
    then insert into "usine"@dbxp values
    (:new."numero_usine",
    :new."adresse_usine"));
    elsif updating then

    (when not exists
    (select "numero_usine" ,"adresse_usine"
    from "usine"@dbxp O
    where O."numero_usine"=:new."numero_usine"
    and O."adresse_usine"=:new."adresse_usine")
    then update "usine"@dbxp set
    "adresse_usine"=:new."adresse_usine"
    where "numero_usine"=:new."numero_usine");
    elsif deleting then
    (when exists
    (select "numero_usine"
    from "usine"@dbxp O
    where O."numero_usine"=:new."numero_usine")
    then Delete from "usine"@dbxp
    where "numero_usine"=:old."numero_usine");
    else raise_application_error
    (-20001, 'erreur declencheur tr_copie_usineDBMIAGE');
    end if;
    End;
    /


    Mais cela ne marche pas car ce n'est pas la bonne syntaxe.

    Donc est ce que qu'elle pourrait m'indiquer la syntaxe exacte ou me proposer une autre solution a base de trigger?

    Merci d'avance

  2. #2
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Avec la solution proposee, des effets indesirables subsisteront si des transactions sont effectuee simultanement sur les memes enregistrements sur les deux bases,

    Pourquoi ne pas utiliser la replication:
    http://www.oracle.com/technology/pro...cation_twp.pdf

Discussions similaires

  1. le contenu de deux tables sur un état Vb
    Par silue fignigue siaka dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 24/03/2009, 21h35
  2. Mapper deux tables sur une seule classe
    Par gorgonite dans le forum Zend_Db
    Réponses: 13
    Dernier message: 30/06/2008, 13h06
  3. [MySQL] afficher le résultat de deux tables sur un même tableau
    Par gpsevasion dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2007, 09h38
  4. Jointure en deux tables sur 2 serveurs!
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/06/2006, 11h12

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