[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 ) :
Citation:
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.