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 :

TRIGGER : empêcher exécution simultanée


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
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Par défaut TRIGGER : empêcher exécution simultanée
    Bonjour


    je voulais savoir comment empecher mon trigger de se lancer une 2e fois si la 1ere execution n'est pas terminée.

    je voudrais donc que le 2eme firing du trigger saute. et que les données devant etre processées lors du 2e firing soient processées au 3e cycle du trigger

  2. #2
    Membre confirmé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Janvier 2014
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2014
    Messages : 28
    Par défaut
    Bonjour,

    Une solution possible est d'utiliser un variable globale (ou un mutex) comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if MonPackage.MaVariableEstInactive
    then MonPackage.SetVariableActive puis "code actuel" puis MonPackage.SetVariableInactive
    end if

  3. #3
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Vous est en train très probablement de faire une mauvaise utilisation des triggers.
    D’une manière générale vous pouvez sérialiser les traitements via des verrous.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Par défaut
    un programme exterieur vient toutes les 5 minutes inserer des ligne dans ma table

    j'ai un trigger qui se decleche sur le after insert.

    le code du trigger peut prendre plus de 5 minutes a s'executer donc j'ai peur qu'au 2eme insert du programme dans ma table le trigger se relance...

    je préférais qu'il attende.

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Déclencher des traitements lourdes via un trigger ne me semble pas la meilleur idée.
    Questions :
    1. Le lancement du traitement se fait en direct par le trigger ou via dbms_job/dbms_scheduler ?
    2. Le programme extérieur garde la session ouverte pendant le laps de temps indiqué (5 minutes) ou se connecte, insert, se déconnecte etc.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 34
    Par défaut
    le trigger se passe sur l'after insert de la table donc pas de scheduler


    et le programme exterieur fait un insert puis se deconnect de suite...

    a l'heure actuelle

    le programme exterieure insert dans une table, et une tache windows lance un fichier batch qui se connect a ma db et qui lance une procedure.

    l'idée est de mettre cette procédure directement dans le trigger

Discussions similaires

  1. Cron et exécutions simultanées
    Par CsJoe dans le forum Administration système
    Réponses: 7
    Dernier message: 03/09/2009, 17h30
  2. Exécution simultanée de deux callback avec pause
    Par laurent.bras dans le forum MATLAB
    Réponses: 11
    Dernier message: 13/10/2008, 14h28
  3. Une seule exécution simultanée
    Par vertical dans le forum Général Python
    Réponses: 6
    Dernier message: 21/05/2006, 14h56
  4. Exécuter simultanément plusieurs fonctions
    Par benj63 dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/10/2005, 16h42
  5. Réponses: 2
    Dernier message: 29/09/2004, 09h07

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