Thread: triggers problems whit function

triggers problems whit function

From
Ma. Cristina Peña C.
Date:

I want to use a function in to a trigger

 

This is my

CREATE FUNCTION "subradio"(integer) RETURNS integer AS 'select cast(count (claveubica) as integer ) from asradios where ubicacion =0;' LANGUAGE 'sql';

 

And my ttrigger is

CREATE TRIGGER validaradios AFTER DELETE ON subestacion FOR EACH ROW EXECUTE PROCEDURE subradio(0);

 

But I got an error

ERROR:  CreateTrigger: function subradio() does not exist

 

What can I do??

 

 

cid:image002.jpg@01C8F24F.E2D90230

Ing. María Cristina Peña C.

Analista Programador

 

Sensa Control Digital S.A. de C.V.

Dir. Av. Bravo #93 Ote.

Col. Centro.
Torreón Coah.

 

Tel. Directo:  (871) 747 01 04

Conmutador: (871) 747 01 01

Tel. Fax:        (871) 747 01 90 

Correo Electrónico: mpena@sensacd.com.mx

 

Attachment

Re: triggers problems whit function

From
"Fernando Moreno"
Date:
2008/10/22 Ma. Cristina Peña C. <mpena@sensacd.com.mx>

I want to use a function in to a trigger

 

This is my

CREATE FUNCTION "subradio"(integer) RETURNS integer AS 'select cast(count (claveubica) as integer ) from asradios where ubicacion =0;' LANGUAGE 'sql';

 

And my ttrigger is

CREATE TRIGGER validaradios AFTER DELETE ON subestacion FOR EACH ROW EXECUTE PROCEDURE subradio(0);

 

But I got an error

ERROR:  CreateTrigger: function subradio() does not exist

 

What can I do??

A trigger function must have a specific structure, it takes no arguments and returns "trigger". Besides, trigger functions are supposed to do some processing before or after insert, update or delete operations, so there's no sense in returning a row count.

Take a look at the docs, specially chapter 35 and 38.9.

Cheers.

Re: triggers problems whit function

From
Guillaume Lelarge
Date:
Fernando Moreno a écrit :
> 2008/10/22 Ma. Cristina Peña C. <mpena@sensacd.com.mx
> <mailto:mpena@sensacd.com.mx>>
>
>     I want to use a function in to a trigger
>
>     This is my
>
>     CREATE FUNCTION "subradio"(integer) RETURNS integer AS 'select
>     cast(count (claveubica) as integer ) from asradios where ubicacion
>     =0;' LANGUAGE 'sql';
>
>     And my ttrigger is
>
>     CREATE TRIGGER validaradios AFTER DELETE ON subestacion FOR EACH ROW
>     EXECUTE PROCEDURE subradio(0);
>
>     But I got an error
>
>     ERROR:  CreateTrigger: function subradio() does not exist
>
>     What can I do??
>
> A trigger function must have a specific structure, it takes no arguments

It can take arguments.

> and returns "trigger".

And this is why, I think, the message tells "function subradio does not
exist". Because there's no subradio function that returns trigger.

> Besides, trigger functions are supposed to do
> some processing before or after insert, update or delete operations, so
> there's no sense in returning a row count.
>
> Take a look at the docs, specially chapter 35 and 38.9.
>

Regards.


--
Guillaume.
 http://www.postgresqlfr.org
 http://dalibo.com

Re: triggers problems whit function

From
Tom Lane
Date:
Guillaume Lelarge <guillaume@lelarge.info> writes:
> Fernando Moreno a �crit :
>> A trigger function must have a specific structure, it takes no arguments

> It can take arguments.

No, it can't.  At least not in the declaration.

            regards, tom lane

Re: triggers problems whit function

From
Guillaume Lelarge
Date:
Tom Lane a écrit :
> Guillaume Lelarge <guillaume@lelarge.info> writes:
>> Fernando Moreno a écrit :
>>> A trigger function must have a specific structure, it takes no arguments
>
>> It can take arguments.
>
> No, it can't.  At least not in the declaration.
>

Oops, you're right. Arguments shouldn't be declared, but can be used in
the body of a PL/pgsql trigger function.

Sorry about this.


--
Guillaume.
 http://www.postgresqlfr.org
 http://dalibo.com

Re: triggers problems whit function

From
MOLINA BRAVO FELIPE DE JESUS
Date:
El mié, 22-10-2008 a las 15:01 -0500, Ma. Cristina Peña C. escribió:
> I want to use a function in to a trigger
>
>
>
> This is my
>
> CREATE FUNCTION "subradio"(integer) RETURNS integer AS 'select
> cast(count (claveubica) as integer ) from asradios where ubicacion
> =0;' LANGUAGE 'sql';
>
>
>
> And my ttrigger is
>
> CREATE TRIGGER validaradios AFTER DELETE ON subestacion FOR EACH ROW
> EXECUTE PROCEDURE subradio(0);
>
>
>
> But I got an error
>
> ERROR:  CreateTrigger: function subradio() does not exist
>
>
>
> What can I do??

write your function in plpgsql

http://www.postgresql.org/docs/8.3/interactive/plpgsql-trigger.html






>
>
>
>
>
> cid:image002.jpg@01C8F24F.E2D90230
>
> Ing. María Cristina Peña C.
>
> Analista Programador
>
>
>
> Sensa Control Digital S.A. de C.V.
>
> Dir. Av. Bravo #93 Ote.
>
> Col. Centro.
> Torreón Coah.
>
>
>
> Tel. Directo:  (871) 747 01 04
>
> Conmutador: (871) 747 01 01
>
> Tel. Fax:        (871) 747 01 90
>
> Correo Electrónico: mpena@sensacd.com.mx
>
>
>
>