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

Requêtes PostgreSQL Discussion :

Trigger sur plusieurs tables


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 374
    Points : 9 707
    Points
    9 707
    Par défaut Trigger sur plusieurs tables
    Bonjour,

    Je voulais savoir s'il était possible de créer un trigger AFTER pour les opérations UPDATE, INSERT et DELETE sur plusieurs tables, ou s'il fallait créer un trigger par table ? Et, si oui, comment ?

    Dans la doc, il semblerait que 1 trigger soit défini pour 1 table et une seule.
    CREATE [ CONSTRAINT ] TRIGGER nom { BEFORE | AFTER | INSTEAD OF } { événement [ OR ... ] }
    ON nom_table
    [ FROM nom_table_referencee ]
    [ NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } ]
    [ FOR [ EACH ] { ROW | STATEMENT } ]
    [ WHEN ( condition ) ]
    EXECUTE PROCEDURE nom_fonction ( arguments )

    où événement fait partie de :

    INSERT
    UPDATE [ OF nom_colonne [, ... ] ]
    DELETE
    TRUNCATE
    Merci d'avance de vos réponses.

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Non, un trigger est "lié" à une table/vue.
    Dixit l'aide en ligne:
    "The trigger will be associated with the specified table, view, or foreign table and will execute the specified function function_name when certain operations are performed on that table."

    Tatayo.

  3. #3
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 374
    Points : 9 707
    Points
    9 707
    Par défaut
    Merci de ta réponse,

    Du coup, si je veux effectuer à chaque INSERT, UPDATE, DELETE sur un certain nombre de tables, une procédure particulière, je dois créer autant de trigger que j'ai de tables concernées.
    Mais, plusieurs trigger peuvent appeler la même fonction ? ou je dois créer une fonction pour chaque table ?

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Tu peux tout à fait appeler une même procédure stockée depuis plusieurs triggers.

    Par contre suivant ce que tu dois faire dans la procédure en question, ça risque de se compliquer un peu.
    Par exemple si le code dépend de la table concernée, il faudra passer par du SQL dynamique.
    Tu vas peut-être aussi devoir traiter les lignes une par une, ce qui aura un impact sur les performances.

    Par exemple si tu veux mettre à jour une date de mise à jour, tu peux le faire de façon ensembliste dans un trigger, mais via une procédure stockée tu devras traiter les lignes une par une.
    A moins que PostGreSQL propose une méthode pour gérer ce cas, je ne sais pas.

    Il est difficile d'en dire plus sans savoir ce que doivent faire ces triggers.

    Tatayo.

  5. #5
    Membre extrêmement actif Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 374
    Points : 9 707
    Points
    9 707
    Par défaut
    L'idée était de gérer un "versionning" de certaines tables qui vont être affichées sous forme de "table" dans l'appli.
    Les gens ayant tendance à ouvrir la liste des articles sans jamais la refermer, je voudrais pouvoir leur suggérer de rafraichir l'affichage s'il y a eu un update/insert/delete sur la table.

    Du coup, lors de la création de la liste des éléments, je stocke la version du fichier, et régulièrement je vérifie si la version est toujours d'actualité.

    Donc, je voulais mettre en place un trigger qui mettrait à jour une table (T_TblVersion_TVR) qui contient (tvr_table varchar(25), tvr_version int) à chaque évènement sur certaines tables "clefs".

    JS
    Au nom du pèze, du fisc et du St Estephe
    Au nom du fric, on baisse son froc...

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

Discussions similaires

  1. Problème trigger sur plusieurs tables
    Par thomasaurelien dans le forum PL/SQL
    Réponses: 5
    Dernier message: 24/01/2012, 19h26
  2. trigger sur plusieurs champs d'une table
    Par PxPar dans le forum PL/SQL
    Réponses: 1
    Dernier message: 27/08/2009, 15h31
  3. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  4. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 17h50
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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