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

PL/SQL Oracle Discussion :

Passage d'informations entre triggers [Oracle 8i]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut Passage d'informations entre triggers [Oracle 8i]
    Bonjour,
    Dans une transaction Oracle, plusieurs triggers sur différentes tables sont déclenchés et je souhaiterai transmettre/partager une ou plusieurs informations entre ces triggers, y-a-t-il un moyen simple pour faire cela ?

    J'ai pensé à des variables de packages mais je ne sais pas trop si cela est la bonne façon....


    Cdlt
    Mugwump

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par mugwump Voir le message
    J'ai pensé à des variables de packages ..
    Tout à fait, les variables définies dans dans la spécification du paquetage ont une portée globale, et sont donc accessibles par n'importe quel code au sein de votre session.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut
    Merci pour cette réponse, mais cela est aussi un problème pour moi.

    Car j'aurai souhaité partager des informations uniquement au sein d'une transaction or deux updates sur deux lignes différentes d'une même table vont voir "les memes variables" de package.....Ce qui me pose problème.


    Exemple :
    une transaction (session) Oracle débute qui fait :
    UPDATE INDIV ==>déclenche un trigger
    UPDATE INDIVIDU ==> déclenche un trigger
    UPDATE SOCIETE ==> déclenche un trigger
    ....
    fin de transaction.

    Ces deux derniers triggers "doivent" voir les données placées "en mémoire" lors du 1er trigger pour repérer l'utilisateur par exemple.
    Mais si j'update INDIV sur MATRICULE1 et MATRICULE2, je ne veux pas partager les mêmes données.

    J'ai placé une méthode initialize dans mon package et je m'apercois qu'elle n'est appellée qu'une seule fois pour tout un tas de transaction (qui sont déclenché par des applications externes au travers d'un pool Java de connection Oracle), ce qui pose problème pour la meme raison que ci-dessus.

    Je ne sais pas à quel moment le package est créée et à quel moment il est détruit.

    Mugqump

  4. #4
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Citation Envoyé par mugwump Voir le message
    J'ai placé une méthode initialize dans mon package et je m'apercois qu'elle n'est appellée qu'une seule fois pour tout un tas de transaction (qui sont déclenché par des applications externes au travers d'un pool Java de connection Oracle), ce qui pose problème pour la meme raison que ci-dessus.

    Je ne sais pas à quel moment le package est créée et à quel moment il est détruit.
    Pour une session donnée, le package est instancié lors de son 1er appel. Il n'est libéré que lorsque la connexion est fermée.

    Dans le cas d'un pool de connexions Java, le package est instancié une fois dans chaque connexion, puis n'est jamais libéré puisque le principe du pool est de laisser les connexions ouvertes.

    Pour ton problème, tu pourrais peut-être utiliser des variables de package de type tableaux indexés par une PK (matricule par ex.), ce qui te permettrait de différencier les données des différent enregistrements. Attention dans ce cas à bien supprimer les données du tableau au fur et à mesure pour ne pas qu'il grossisse trop.

  5. #5
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    J'imagine que ce n'est pas évident mais pour moi c'est typiquement le genre de cas qui doivent être géré dans l'applicatif, pas dans les triggers.

  6. #6
    Membre chevronné Avatar de xdescamp
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 300
    Par défaut
    Citation Envoyé par nuke_y Voir le message
    J'imagine que ce n'est pas évident mais pour moi c'est typiquement le genre de cas qui doivent être géré dans l'applicatif, pas dans les triggers.
    Je suis assez d'accord sur le principe. Si ce n'est pas possible dans l'application directement, pourquoi ne pas partir sur du package PL/SQL (ce qui revient à stocker une partie du code de l'application dans la base).

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2011, 01h59
  2. Passage d'information entre deux programmes
    Par CTotophe85 dans le forum C++
    Réponses: 8
    Dernier message: 22/10/2008, 19h37
  3. [Theorie] Passage des informations entre les redolog et les tbs undo
    Par lecharcutierdelinux dans le forum Administration
    Réponses: 10
    Dernier message: 07/06/2007, 09h11
  4. passage d'information entre deux pages
    Par hamham dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 30/01/2007, 16h36
  5. Passage d'information entre deux fenêtres
    Par kuuya dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/08/2005, 14h35

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