Thread: trigger error
Hi,
I',m trying to create trigger with plpgsql trigger function
then I got this error message when trigger executed:
Number: -2147467259
Error while executing th query;
ERROR: fmgr_info: function 1546856080: cache lookup failed
Here is the function code:
CREATE FUNCTION TRIGGER_UPDATE_AXPRDT_STATUS()
RETURNS OPAQUE
AS 'BEGIN
IF NEW.ONHAND = 0 THEN
NEW.STATUS = ''D'';
END IF;
RETURN NEW;
END;'
LANGUAGE 'plpgsql';
RETURNS OPAQUE
AS 'BEGIN
IF NEW.ONHAND = 0 THEN
NEW.STATUS = ''D'';
END IF;
RETURN NEW;
END;'
LANGUAGE 'plpgsql';
CREATE TRIGGER TRIGGER_AXPRDT_FUTURESTATUS
BEFORE UPDATE ON AXPRDT
FOR EACH ROW
EXECUTE PROCEDURE TRIGGER_UPDATE_AXPRDT_STATUS();
BEFORE UPDATE ON AXPRDT
FOR EACH ROW
EXECUTE PROCEDURE TRIGGER_UPDATE_AXPRDT_STATUS();
Please Help..
Yudie
You must have dropped and recreated the function after your trigger was created... You need to recreate the trigger now, so that it picks up the new function id. In the future use 'CREATE OR REPLACE' to modify a function instead of DROP and CREATE - this will make sure the modified function keeps its id. I hope, it helps... Dima Yudie wrote: > Hi, > I',m trying to create trigger with plpgsql trigger function > then I got this error message when trigger executed: > > Number: -2147467259 > Error while executing th query; > ERROR: fmgr_info: function 1546856080: cache lookup failed > > Here is the function code: > > CREATE FUNCTION TRIGGER_UPDATE_AXPRDT_STATUS() > RETURNS OPAQUE > AS 'BEGIN > IF NEW.ONHAND = 0 THEN > NEW.STATUS = ''D''; > END IF; > RETURN NEW; > END;' > LANGUAGE 'plpgsql'; > > CREATE TRIGGER TRIGGER_AXPRDT_FUTURESTATUS > BEFORE UPDATE ON AXPRDT > FOR EACH ROW > EXECUTE PROCEDURE TRIGGER_UPDATE_AXPRDT_STATUS(); > > > Please Help.. > > Yudie
"Yudie" <yudie@axiontech.com> wrote: > Hi, > I',m trying to create trigger with plpgsql trigger function > then I got this error message when trigger executed: > Number: -2147467259 > Error while executing th query; > ERROR: fmgr_info: function 1546856080: cache lookup failed > Here is the function code: >CREATE FUNCTION TRIGGER_UPDATE_AXPRDT_STATUS() >RETURNS OPAQUE >[snipped] >LANGUAGE 'plpgsql'; >CREATE TRIGGER TRIGGER_AXPRDT_FUTURESTATUS >BEFORE UPDATE ON AXPRDT >FOR EACH ROW >EXECUTE PROCEDURE TRIGGER_UPDATE_AXPRDT_STATUS(); The errors mean that after the trigger definition you maded a modification on the function rebuilding it. Try to delete the trigger and define it again. The fact that you are using "RETURN OPAQUE" instead of "RETURN TRIGGER" means that you are using a Postgres version prior then 7.3.x. Using the version 7.3.x ( I suggest you the 7.3.3 ) you can define that funcion: "CREATE OR REPLACE .... " so you are not forced to delete it before and your problem should gone. Gaetano