Oracle replication pbm de trigger
Fermé
NICEMAN16
-
24 avril 2008 à 23:16
UaLShark Messages postés 191 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 juillet 2010 - 6 janv. 2009 à 08:33
UaLShark Messages postés 191 Date d'inscription vendredi 19 mai 2006 Statut Membre Dernière intervention 21 juillet 2010 - 6 janv. 2009 à 08:33
A voir également:
- Oracle replication pbm de trigger
- Assistant trigger - Guide
- Trouver réplique de film - Télécharger - Divers TV & Vidéo
- Oracle liste des tables ✓ - Forum Programmation
- Oracle 11g download windows 64-bit ✓ - Forum Oracle
- Violation de contrainte unique oracle - Forum Programmation
4 réponses
UaLShark
Messages postés
191
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
21 juillet 2010
35
25 avril 2008 à 10:47
25 avril 2008 à 10:47
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 ;
/
merci je croi que ca va marcher je te tiendrai au courant merci encore.
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 ?
UaLShark
Messages postés
191
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
21 juillet 2010
35
>
c.robertleroy
1 janv. 2009 à 19:29
1 janv. 2009 à 19:29
Si tu travailles avec Oracle
create or replace trigger MON_TRG after INSERT ON PROFESSEUR FOR EACH ROW
begin
TextAdresse := Adresse||' '||to_char(cp)||' '||ville;
end ;
create or replace trigger MON_TRG after INSERT ON PROFESSEUR FOR EACH ROW
begin
TextAdresse := Adresse||' '||to_char(cp)||' '||ville;
end ;
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
UaLShark
Messages postés
191
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
21 juillet 2010
35
6 janv. 2009 à 08:33
6 janv. 2009 à 08:33
Bonjour,
Exactement, dans le cas de modification d'un enregistrement qui n'est pas encore validé oracle génère une erreur 'Table Mutating'.
J'ajouterais dans le cas des update, il faut eviter les triggers circulaires (des tables dependantes ou l'une met à jour l'autre)
Exactement, dans le cas de modification d'un enregistrement qui n'est pas encore validé oracle génère une erreur 'Table Mutating'.
J'ajouterais dans le cas des update, il faut eviter les triggers circulaires (des tables dependantes ou l'une met à jour l'autre)