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] problème de mise à jour


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 120
    Points : 124
    Points
    124
    Par défaut [trigger] problème de mise à jour
    Bonjour,

    j'ai une table qui sert à stocker les achats facturés pour des statististiques.
    Mon problème est quand j'essaye de faire le trigger permettant de mettre à jour cette table à chaque modification de la table produit à condition que le produit soit facturé ( il doit donc etre référencé dans la tables facturer ) :

    CREATE OR REPLACE FUNCTION majstatAchat() RETURNS TRIGGER AS $$
    DECLARE
    codif TEXT;
    id_mois TEXT;
    BEGIN

    SELECT INTO codif,id_mois lower(substr(numFact, 1,4)), substr(dateFacture, 6,2)
    FROM FACTURER F1
    INNER JOIN FACTURES F2 ON F1.idFacture=F2.idFacture
    WHERE idVO=NEW.idVO;

    IF codif IS NULL THEN

    RETURN NULL;

    ELSE

    IF (TG_OP = 'UPDATE') THEN
    UPDATE stat_achat_mois SET fa07=(fa07 - OLD.prixachat + NEW.prixachat) WHERE idmois = '02';
    RETURN NEW;
    ELSIF (TG_OP = 'INSERT') THEN
    UPDATE stat_achat_mois SET fa07=(fa07 + NEW.prixachat) WHERE idmois = '02';
    RETURN NEW;
    END IF;

    END IF;
    END;
    $$ language plpgsql;


    CREATE TRIGGER trig_majstatAchat
    AFTER INSERT OR UPDATE ON PRODUITS
    FOR EACH ROW EXECUTE PROCEDURE majstatAchat();
    Je teste si codif ext différent de nul donc existe pour pouvoir mettre à jour ma table, mais, ça ne fonctionne pas.
    ça fonctionne seulement si j'enlève le test IF codif IS NULL THEN ... ELSE, mais ce n'est pas ce que je cherche à faire car ça comptabilise même les produits non encore factures.

    Quelqu'un peut-il m'aider pour résoudre mon problème ?

    Merci d'avance.

  2. #2
    Membre averti

    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 338
    Points : 404
    Points
    404
    Par défaut
    Bonsoir

    Si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT INTO codif,id_mois lower(substr(numFact, 1,4)), substr(dateFacture, 6,2)
    FROM FACTURER F1
    INNER JOIN FACTURES F2 ON F1.idFacture=F2.idFacture
    WHERE idVO=NEW.idVO;
    cette requête ne retourne pas de ligne lorsque les produits ne sont pas à facturer donc il faut faire le test suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IF NOT FOUND THEN
        RETURN NULL;
    END IF;
    Christophe Chauvet
    Consultant Odoo
    Python / PostgreSQL

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 120
    Points : 124
    Points
    124
    Par défaut
    Bonsoir,

    merci bien, ça fonctionne avec.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/01/2013, 14h28
  2. problème de mise à jour via un trigger
    Par clement42 dans le forum Sybase
    Réponses: 4
    Dernier message: 17/01/2007, 10h29
  3. [2000 Server] Problème de mise à jour windowsupdate !!
    Par rohstev dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 24/08/2005, 15h03
  4. Problème de mise à jour de base de données
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 26/05/2004, 11h38
  5. problème de mise à jour de BD
    Par tidiane dans le forum Bases de données
    Réponses: 5
    Dernier message: 04/03/2004, 15h32

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