IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[TRIGGER][ORACLE8i] MAJ d'un enregistrement qui a déclenché mon trigger


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut [TRIGGER][ORACLE8i] MAJ d'un enregistrement qui a déclenché mon trigger
    Bonjour,

    J'ai une table de CRE (Compte-rendu d'exécution).
    L'application en amont m'envoie une demande de traitement (INSERT dans la table)

    Un trigger AFTER INSERT EACH ROW se déclenche et lance une procédure de traitement de la demande.

    Une fois la procédure de traitement terminée, je dois mettre à jour la demande dans la table de CRE et mettre DEMANDE_TRAITEE.

    Mais là ça ne fonctionne pas, car je rentre en contention avec mon insert qui a déclenché mon trigger.

    Comment je peux faire?

    Merci pour vos réponses

  2. #2
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Pourquoi n'utilises tu pas un trigger before insert ? Cela te permettrait d'utiliser la variables :new :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :new.maColonne := 'DEMANDE TRAITEE';

  3. #3
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut
    Bonjour PlaineR,

    Je n'ai pas compris ta solution, la question était peut être mal posée.

    Le traitement en amont dépose un enregistrement ENRG1( Composé de la valeur APPLI_ORIGINE, NO_DEMANDE, STATUT_DEMANDE) dans une table T1.

    Aujourd'hui, j'ai un Trigger sur cette table qui se déclenche sur cette table à l'insertion de chaque ligne. Le trigger déclenche une mise à jour de la base applicative, et doit mettre à jour l'ENRG1 de la table T1, en le complétant en valorisant STATUT_DEMANDE à "DEMANDE TRAITEE" (si SUCCES) ou "DEMANDE REFUSEE" (si ECHEC).

    Cela ne fonctionne pas... car l'insert n'a pas été validé. Alorq peut-être que le before fonctionne, mais je ne comprends pas trop comment je dois m'en servir...

    je suis preneur de toute "belle" solution (pas d'usine à gaz).

    Merci d'avance.

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 33
    Par défaut
    Je crois que ton champ STATUT_DEMANDE ne sert à rien. Je m'explique. Soit la ligne est insérée et alors STATUT_DEMANDE aura la valeur DEMANDE TRAITEE, soit la ligne n'est pas insérée. Donc la table T1 ne contiendra jamais de valeur DEMANDE REFUSEE dans le champ STATUT_DEMANDE...

  5. #5
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut
    Ah si,si, elle me sert cette valeur...

    Ce n'est pas l'insertion de la table T1 qui est dit valide ou pas... C'est la procédure qui est lancée, et qui met l'application à jour qui informe si la demande est traitée ou pas. C'est pas un test d'insertion de l'enregistrement dans la table T1 qui est testé, mais l'insertion dans d'autres tables.

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 33
    Par défaut
    Citation Envoyé par Titouf
    Le traitement en amont dépose un enregistrement ENRG1 dans une table T1.
    J'ai un Trigger sur cette table à l'insertion de chaque ligne.
    Le trigger doit mettre à jour l'ENRG1 de la table T1.

    ...

    C'est pas un test d'insertion de l'enregistrement dans la table T1 qui est testé, mais l'insertion dans d'autres tables.
    Comprend plus, là...

  7. #7
    Membre confirmé Avatar de Titouf
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 177
    Par défaut
    Reprenons...

    • J'ai une table T1 qui reçoit des enregistrements d'une appli A1.
    • J'ai trigger TR1 qui est sur chaque insertion de la table T1.
    • Le trigger déclenche un traitement TRT1 qui met à jour une appli A2.


    Alors le déroulement de la procédure:
    1. A1 envoie un ENRG1 dans la table T1.
    2. TR1 se déclenche et lance le traitement TRT1 qui met à jour l'appli A2.
    3. Si ce traitement s'est déroulé correctement, je mets à jour ENRG1 en lui indiquant DEMANDE TRAITEE,
    4. sinon je mets à jour l'ENRG1 en lui indiquant DEMANDE REFUSEE.


    Ma mise à jour échoue car je mets à jour via mon trigger l'enregistrement qui déclenche mon trigger.

    Voilà, dis moi que tu me comprends?

  8. #8
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    fait une recherche sur le site, il y a un tutoriel dédié et des posts dans le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Savoir qui a déclenché le trigger
    Par yodaime dans le forum PL/SQL
    Réponses: 10
    Dernier message: 16/06/2011, 16h25
  2. récupérer la ligne qui a déclenché un trigger
    Par Peanut dans le forum Développement
    Réponses: 2
    Dernier message: 17/05/2011, 12h01
  3. Récupération requête qui a déclenché le trigger
    Par jacky666 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 06/03/2009, 17h20
  4. [VBA] MAJ d'un enregistrement via un formulaire
    Par Minet dans le forum Access
    Réponses: 5
    Dernier message: 09/03/2006, 20h40
  5. Réponses: 6
    Dernier message: 04/11/2005, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo