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 procedure probléme


Sujet :

Requêtes PostgreSQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut trigger procedure probléme
    Bonjour,

    je suis débutant et je n'ai jamais fait de trigger/procedure, après avoir bien galéré pour comprendre et étant pris par le temps je sollicite votre aide

    J'ai un trigger qui appel une procédure qui doit additionner 2 champs puis écrire dans un nouveau champs la nouvelle valeur à chaque insertion.

    le problème c'est que la nouvelle valeur est toujours la même pour tout les tuple parce les valeurs utilisées son que sur le 1er tuple de la table.

    ce que je voudrai c'est qu'il le fasse pour chaque tuple en question.

    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    CREATE TRIGGER calc_h_fin
      BEFORE INSERT
      ON histo
      FOR EACH ROW
      EXECUTE PROCEDURE calc_h_fin();
     
     
     
    CREATE OR REPLACE FUNCTION calc_h_fin()
      RETURNS trigger AS
    $BODY$
     
    DECLARE 
    val interval;
     
    BEGIN
    select into val evenem_hdeb+evenem_retard from histo;
      NEW.h_fin_incident := val ;  
     
    RETURN NEW;
    END;
     
    $BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    ALTER FUNCTION calc_h_fin() OWNER TO postgres;
    Merci beaucoup !

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai modifié la procdure comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    CREATE OR REPLACE FUNCTION calc_h_fin()
      RETURNS trigger AS
    $BODY$
     
     
    DECLARE 
     
    val interval;
     
    BEGIN
     
    FOR val in select evenem_hdeb+evenem_retard from osiris
    LOOP
      NEW.h_fin_incident := val ;  
     
    END LOOP;
    RETURN NEW;
     
    END;$BODY$
      LANGUAGE plpgsql VOLATILE
      COST 100;
    ALTER FUNCTION calc_h_fin() OWNER TO postgres;
    les valeurs s'écrivent pour chaques tuples ,
    sauf que la première valeur du premier tuple n'est pas écrite,
    tout est décalé d' 1 tuple.

    la valeur est donc écrite sur le tuple suivant et non dans le tuple courant
    quelqu’un a une idée ?

  3. #3
    Membre émérite
    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
    Points : 2 890
    Points
    2 890
    Par défaut
    J'ai l'impression que ce que tu voudrais faire s'écrit juste comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NEW.h_fin_incident := NEW.evenem_hdeb + NEW.evenem_retard
    sans aucune requête ni aucune boucle.

    Mais la boucle FOR qui écrase répétitivement la même variable permet difficilement de comprendre où tu veux en venir.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci !!
    ca marche , en effet pourquoi faire compliqué quand on peut faire simple

+ 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 / Variable
    Par Sheava dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 20/09/2010, 09h44
  3. Procedure problème DBMS_OUTPUT.PUT
    Par LinuxUser dans le forum SQL
    Réponses: 12
    Dernier message: 09/10/2009, 14h28
  4. Réponses: 4
    Dernier message: 13/12/2006, 00h08
  5. Problèmes création de procédures et de triggers
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 06/11/2003, 10h42

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