Oracle replication pbm de trigger
NICEMAN16
-
UaLShark Messages postés 191 Date d'inscription Statut Membre Dernière intervention -
UaLShark Messages postés 191 Date d'inscription Statut Membre Dernière intervention -
Bonjour, voici mon pbm, je suis entrain de faire un programe qui fais une replication de 2 table qui ont la meme architecture et le meme nom "tab",
c'est une replication multimaitre
j'ai crée un trigger qui replique de basem administrateur repm vers bases administrateur reps et ca marche tres bien.
j'ai mis en place le meme trigger tim de reps vers repm et la ca pose probleme car il ya confusion de recursivité alors j'ai modifié le trigger tim de reps vers repm comme suite :
create trigger TIM
BEFORE insert on TAB
for each rOW
WHEN ( ID <> SELECT ID FROM TAB )
begin
insert into REPM.TAB@BM.us.oracle.com values
( :new.id ,:new.NOM,:new.PRENOM, :new.NE_LE );
END IF;
end ;
/
je me suis basé sur l'idée de l'insertion seulement si l''id' n'existe pas pour evité la recursivité mais voici le msg d'erreur:
WHEN ( ID <> SELECT ID FROM TAB )
*
ERREUR à la ligne 4 :
ORA-00936: Expression absente
si vous pouvez m'aider a résoudre ca je serai reconnaissant, merci d'avance.
c'est une replication multimaitre
j'ai crée un trigger qui replique de basem administrateur repm vers bases administrateur reps et ca marche tres bien.
j'ai mis en place le meme trigger tim de reps vers repm et la ca pose probleme car il ya confusion de recursivité alors j'ai modifié le trigger tim de reps vers repm comme suite :
create trigger TIM
BEFORE insert on TAB
for each rOW
WHEN ( ID <> SELECT ID FROM TAB )
begin
insert into REPM.TAB@BM.us.oracle.com values
( :new.id ,:new.NOM,:new.PRENOM, :new.NE_LE );
END IF;
end ;
/
je me suis basé sur l'idée de l'insertion seulement si l''id' n'existe pas pour evité la recursivité mais voici le msg d'erreur:
WHEN ( ID <> SELECT ID FROM TAB )
*
ERREUR à la ligne 4 :
ORA-00936: Expression absente
si vous pouvez m'aider a résoudre ca je serai reconnaissant, merci d'avance.
A voir également:
- Oracle replication pbm de trigger
- Assistant trigger - Guide
- Trouver réplique de film - Télécharger - Divers TV & Vidéo
- Oracle jre usage ✓ - Forum Virus
- Oracle 11g download windows 64-bit ✓ - Forum Oracle
- Telecharger oracle virtualbox - Télécharger - Émulation & Virtualisation
4 réponses
ok ,
WHEN ( ID <> SELECT ID FROM TAB ) c'est pas un syntax correct je crois.
en plus tab est un mot reservé d'oracle c'est une vue qui contient les tables et les vues du current user essaie stp de modifier ce nom de table!
après voilà le code que je te propose : //Je suppose que que id est un number à toi de modifier !
create trigger TIM
BEFORE insert on TABXX
for each rOW
count_id number;
begin
select count(1) into count_id from TABXX where TABXX.id = :new.id;
if (count_id = 0 ) then
insert into REPM.TAB@BM.us.oracle.com values
( :new.id ,:new.NOM,:new.PRENOM, :new.NE_LE );
END IF;
end ;
/
WHEN ( ID <> SELECT ID FROM TAB ) c'est pas un syntax correct je crois.
en plus tab est un mot reservé d'oracle c'est une vue qui contient les tables et les vues du current user essaie stp de modifier ce nom de table!
après voilà le code que je te propose : //Je suppose que que id est un number à toi de modifier !
create trigger TIM
BEFORE insert on TABXX
for each rOW
count_id number;
begin
select count(1) into count_id from TABXX where TABXX.id = :new.id;
if (count_id = 0 ) then
insert into REPM.TAB@BM.us.oracle.com values
( :new.id ,:new.NOM,:new.PRENOM, :new.NE_LE );
END IF;
end ;
/
Je cherche à faire une mise à jour d'un champs d'une table [PROFESSEUR] lors de la mise à jour de cette même table.
En clair je souhaite faire une concaténation de champs dans un champs dans la même table.
p.Texte_Adresse = p.Adresse + ' ' + p.CP+ ' ' + p.Ville
Puisque je modifie un enregistrement qui vient d'être modifié (puisque le trigger vient d'être lancé) cela ne va t-il pas partir en boucle ?
Avez-vous une préconisation ?
En clair je souhaite faire une concaténation de champs dans un champs dans la même table.
p.Texte_Adresse = p.Adresse + ' ' + p.CP+ ' ' + p.Ville
Puisque je modifie un enregistrement qui vient d'être modifié (puisque le trigger vient d'être lancé) cela ne va t-il pas partir en boucle ?
Avez-vous une préconisation ?
Le problème vient du fait que dans un trigger si vous modifier l'enregistrement qui déclenche le trigger vous relancer le trigger.
L'astuce est d'après ce que l'on m'a dit :
- Faire un trigger sur certain champs de la table sur modification de ces champs
- Dans le trigger modifier un autre champ.
Christian
L'astuce est d'après ce que l'on m'a dit :
- Faire un trigger sur certain champs de la table sur modification de ces champs
- Dans le trigger modifier un autre champ.
Christian