Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/05/2008, 21h37   #1
Invité de passage
 
Inscription : avril 2008
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 10
Points : 2
Points : 2
Par défaut Réplication, triggers, recursivité

Code :
1
2
3
4
5
6
7
8
9
CREATE OR REPLACE TRIGGER "REPM"."TIM" BEFORE
INSERT ON "TAB" FOR EACH ROW DECLARE count_id INT:= :NEW.ID;
begin
count_id := REPM.RECHERCHE_SI_EXIST (COUNT_ID);
IF (count_id < 1 ) then
INSERT INTO <a href="mailto:REPS.TAB@BS.us.oracle.com">REPS.TAB@BS.us.oracle.com</a> VALUES
( :new.id ,:new.NOM,:new.PRENOM, :new.NE_LE );
END IF;
end;
slt a tous, voila je suis entrain de faire une replication multimaitre et mon pbm c la recursivité car mes trigger ne séarrettent pas de l'insertion, pour evité ca j'ai cree une fonction qui teste la cle 'ID' de ma table 'TAB' et retourne une valeur 'nb' qui est infecté dans le trigger a la valeur 'count_id' pour autorisé l'insertion mais j'ai tjrs le meme pbm de recursivité!!!

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE OR REPLACE  FUNCTION "REPM"."RECHERCHE_SI_EXIST" (p_id 
    number) RETURN NUMBER IS nb number;
begin
 SELECT p_id INTO nb FROM REPM.TAB WHERE (REPM.TAB.id = p_id);
 IF NB > 0 THEN
  RETURN NB;
  ELSE 
  RETURN NB;
 END IF;
 EXCEPTION
WHEN NO_DATA_FOUND THEN
nb :=0;
RETURN nb;
end;

merci d'avance
niceman16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 01h37   #2
Rédacteur
 
Inscription : décembre 2002
Messages : 2 401
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 401
Points : 3 307
Points : 3 307
Bonjour

La fonction booléenne DBMS_REPUTIL.FROM_REMOTE devrait vous être utile...
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 10h35   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Et pourquoi ne pas utiliser les outils de réplication avancée d'Oracle itself ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 11h03   #4
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Pour la soluce, je voie pas tout de suite. Par contre pour la récursivité je pense que cela provient du fait que comme tu es en plein INSERT le COMMIT publiant ta modification n'est pas réalisé et le déclenchement du TRIGGER S1 -> S2 -> S1 -> S2 -> ... provient du fait que à chaque itération tu travaille sur une session nouvelle, donc voyant les données en l'état avant le premier TRIGGER. Bref personne ne voie la présence de l'autre...

En ce qui concerne les outils Oracle, je te conseille de lire le livre de la documentation standard : Oracle® Database Advanced Replication

philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 22h35   #5
Invité de passage
 
Inscription : avril 2008
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 10
Points : 2
Points : 2
Par défaut tjrs recursive :cry:

je n'est pas l'outil de replication oracle itself alors ya pas une autre idée, et je devrai travailler avec DBMS_REPUTIL.FROM_REMOTE ou dois je l'ecrire?
et merci encore!!!
niceman16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 23h23   #6
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
tu as lu la doc sur la réplication avancé ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 23h55   #7
Invité de passage
 
Inscription : avril 2008
Messages : 10
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 10
Points : 2
Points : 2
Par défaut oui mais tjrs besoin d'aide

oui mais peux tu m'aider pour réécrire mon scripte! je suis confus
merci encore... c mon 1er travail avec oracle
niceman16 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2008, 09h31   #8
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Désolé mais j'ai pas le temps de t'aider à réécrire ce qui existe en standard
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h33.


 
 
 
 
Partenaires

Hébergement Web