Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1533 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [resoluTRIGGER REPLICATION] replication de table sur deux bases repar

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resoluTRIGGER REPLICATION] replication de table sur deux bases repar

n°1365332
ippat
Posté le 12-05-2006 à 17:00:32  profilanswer
 

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


Message édité par ippat le 29-06-2008 à 12:29:58
mood
Publicité
Posté le 12-05-2006 à 17:00:32  profilanswer
 

n°1748654
Prisca82
Posté le 19-06-2008 à 01:15:51  profilanswer
 

Bonjour ippat,
 
Je me rend bien compte que ton post date un peu mais je suis intéressé par la réalisation d'une réplication similaire à celle que tu as souhaité réalisé.
As-tu finalement trouvé la solution ?
 
Je te remercie,
Prisca

n°1752938
ippat
Posté le 29-06-2008 à 12:27:53  profilanswer
 

Prisca82 a écrit :

Bonjour ippat,
 
Je me rend bien compte que ton post date un peu mais je suis intéressé par la réalisation d'une réplication similaire à celle que tu as souhaité réalisé.
As-tu finalement trouvé la solution ?
 
Je te remercie,
Prisca


 
 
Effectivement, ce post date un peu.
 
Si je me souviens bien, l'erreur venait juste du fait que j'utilisais des guillements pour les noms de table ("usine" par exemple) dans le code alors que les noms de tables n'en contenaient pas.
 
Voilà pas sur que cette réponse te soit très utilse


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [resoluTRIGGER REPLICATION] replication de table sur deux bases repar

 

Sujets relatifs
[Mysql] Sum() avec liaison de table ????Executer Nfois une requete (insertion) dans une table ?
Deplacement de certaine ligne du table (mysql)look up table (LUT)
Effet d'un OPTIMIZE TABLE sur tables innodb[SqlServer] DELETE ds une table distante : pb avec le WHERE
TABLE ou CSS ???update (plutot ajout) dans table via un select
[VBA ACCESS] Créer une table à partir des noms de fichiersAcces mise a jour d'une table
Plus de sujets relatifs à : [resoluTRIGGER REPLICATION] replication de table sur deux bases repar


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR