Trigger pour replication
NICEMAN16
-
UaLShark Messages postés 193 Statut Membre -
UaLShark Messages postés 193 Statut Membre -
Bonjour, je veux cree un trigger 'TIM' qui me permet de faire une replication d'1 base de donnée 'BM' a une autre 'BS'.
alors voila pour cela je me suis trouvé dans un pbm de recursivité, j'ai changer mon trigger pour qu'il fais la test dans ma table 'TAB' s'il ne trouve pas l'ID il fais l'insertion et la je me suis trouvé dans un probleme de table mutante.
j'ai cree alors une fonction qui fais le test a la place du trigger et lui retourne une valeur seulement l'insertion se fais que d'un coté. voila le trigger et la fonction, pour mieu comprendre les 2 table sont 'TAB' et les trigger 'TIM' ca gange que dans le dblink.
CREATE OR REPLACE FUNCTION RECHERCHE_SI_EXIST (ID NUMBER)
return NUMBER IS count_id NUMBER;
PRAGMA AUTONOMOUS_TRANSACTION;
begin
select 1 into count_id from TAB where TAB.id = id;
RETURN count_id;
end;
/
create trigger TIM
after insert on TAB
for each rOW
DECLARE count_id NUMBER;
begin
count_id := RECHERCHE_SI_EXIST (:NEW.ID);
if (count_id < 1 ) then
insert into REPM.TAB@BM.us.oracle.com values
( :new.id ,:new.NOM,:new.PRENOM, :new.NE_LE );
END IF;
end;
merci d'avance...
alors voila pour cela je me suis trouvé dans un pbm de recursivité, j'ai changer mon trigger pour qu'il fais la test dans ma table 'TAB' s'il ne trouve pas l'ID il fais l'insertion et la je me suis trouvé dans un probleme de table mutante.
j'ai cree alors une fonction qui fais le test a la place du trigger et lui retourne une valeur seulement l'insertion se fais que d'un coté. voila le trigger et la fonction, pour mieu comprendre les 2 table sont 'TAB' et les trigger 'TIM' ca gange que dans le dblink.
CREATE OR REPLACE FUNCTION RECHERCHE_SI_EXIST (ID NUMBER)
return NUMBER IS count_id NUMBER;
PRAGMA AUTONOMOUS_TRANSACTION;
begin
select 1 into count_id from TAB where TAB.id = id;
RETURN count_id;
end;
/
create trigger TIM
after insert on TAB
for each rOW
DECLARE count_id NUMBER;
begin
count_id := RECHERCHE_SI_EXIST (:NEW.ID);
if (count_id < 1 ) then
insert into REPM.TAB@BM.us.oracle.com values
( :new.id ,:new.NOM,:new.PRENOM, :new.NE_LE );
END IF;
end;
merci d'avance...