fonction trigger n'enregistre pas la valeur calculée
Bonjur à tous;
Je n'ai pas trouvé de réponse aussi j'espère ne pas faire de doublon avec d'autres fils de discussions.
La fonction trigger est appelée par un trigger et le tout semble bien fonctionner, mis à part que la valeur que je veux voir modifiée ne l'est pas 8O.
Voici la fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
CREATE OR REPLACE FUNCTION "BDR".lancer_setcumul()
RETURNS trigger AS
$BODY$
BEGIN
-- UPDATE "BDR"."RELEVES_PT" SET NEW."CUMULD" = setcumul("ROUTE", "PRD", "ABD");
NEW."CUMULD" := "BDR".setcumul(NEW."ROUTE", NEW."PRD", NEW."ABD");
RAISE NOTICE 'Pour route=%, prd=%, abd=%, cumul=%', NEW."ROUTE", NEW."PRD", NEW."ABD", NEW."CUMULD";
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION "BDR".lancer_setcumul() OWNER TO postgres; |
La fonction setcumul() retourne systématiquement une valeur de type integer comme le confirme son en-tête:
Code:
1 2 3
|
CREATE OR REPLACE FUNCTION "BDR".setcumul(IN text, IN integer, IN integer, OUT integer)
RETURNS integer AS ... |
J'ai tenté de placer une requête de type INSERT INTO mais j'ai droit à un plantage et des logs de 10M chacun à cause d'une boucle infinie que je maitrise pas :?
Auriez-vous une suggestion ?