Обсуждение: trigger error

Поиск
Список
Период
Сортировка

trigger error

От
"Yudie"
Дата:
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

Re: trigger error

От
Dmitry Tkach
Дата:
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





Re: trigger error

От
"Mendola Gaetano"
Дата:
"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