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

PostgreSQL Discussion :

Trigger / Procedure / Variable


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut Trigger / Procedure / Variable
    Bonjour à vous,

    Savez vous comment je peux récupérer une variable initialisée dans une
    procedure afin de la réutiliser dans une function trigger.

    Je m'explique j'utilise des procédures stockée pour insérer/supprimer/... les
    données d'une table, dans cette procédures je récupere l'id de l'utilisateur (table users).
    Apres ou avant (BEFORE/AFTER) l'insertion/suppression des données une function trigger est exécutée, dans cette function trigger je log les événements de la table que je viens de modifier et j'aimerais récupérer l'id de l'utilisateur afin de savoir qui est à l'origine de l'action.

    J'ai cherché du coté des variables, j'ai rien trouvé à par les custum_variable_class, sauf que je ne pas faire de set myCustomVar to $1
    dans une procédure. La solution de la table temporaire me semble la plus
    simple, mais j'aimerais tout de meme savoir si je ne suis pas passé à coté d'un truc avec des variables.

    Voila merci à vous.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create function myFunction(_userId integer)
    ...
    ici je voudrais initialisé une variable : set userid = _userId
    
    INSERT blabla <- Déclenche le trigger
    ...
    end function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    create function myTriggerFunction()
    ...
    insert into maTableDeLog(userid, ...)
    value(ma variable préalablement initialisé : userid, ...)
    ...
    end myTriggerFunction

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Du point de vue de la modélisation du code, l'intérêt d'un trigger, c'est que les bouts de code qui font des INSERT ne soient pas au courant de son existence et qu'il n'en dépendent pas, pas plus que lui-même ne dépend de l'appelant.
    Dans le cas contraire, on perd l'avantage du trigger qui est son côté transparent, par contre on a l'inconvénient qui est l'impossibilité de lui passer des informations de contexte. Donc dans ce cas de figure, autant appeler explicitement une fonction juste avant ou après l'insert et ne pas avoir de trigger.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Salut merci de ta réponse,

    Mais je suis dans un cas assez spécifique ou je dois enregistrer la totalité des changements de toutes les tables de la BDD, y compris les modifications qui pourrait être faite directement depuis un outils de gestion de BDD (genre PGAdmin III). Le trigger est donc obligatoire.

    Sinon j'ai résolu mon problème en passant par les tables temporaires. Si la modif ce fait a partir d'un outil de gestion, je choisit un utilisateur (table users) bien spécifique, qui n'a aucun accès au système client.

    Encore merci.

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

Discussions similaires

  1. Trigger procedure pour stocker une variable
    Par F.Salenko dans le forum Sybase
    Réponses: 0
    Dernier message: 18/11/2011, 02h17
  2. trigger procedure probléme
    Par devone dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/05/2011, 10h50
  3. [Oracle] Stored Procedures Variable
    Par elnfrancois dans le forum SQL
    Réponses: 2
    Dernier message: 11/09/2007, 16h34
  4. Réponses: 4
    Dernier message: 26/03/2007, 18h06
  5. Procédures stockées, Trigger et variables internes
    Par lio33 dans le forum InterBase
    Réponses: 1
    Dernier message: 01/09/2005, 10h28

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