Thread: function / trigger problem

function / trigger problem

From
"F. Masselink"
Date:
Hello,

i've stumbled upon a problem with triggers and functions.

this function doesn't work.
It gives an error when creating the trigger: set_leentype() does not exist.

CREATE FUNCTION set_leentype (int4) RETURNS opaque AS '
    BEGIN
        NEW.type := $1;
        RETURN NEW;
    END;
' LANGUAGE 'plpgsql';

CREATE TRIGGER is_boek
    BEFORE INSERT ON boek
    FOR EACH ROW
    EXECUTE PROCEDURE set_leentype (1);

but if i use the same function and triggers, with the little
modification that i don't pass a parameter, it works fine!

does anyone know why this is and does anyone know a solution to this. (I
want to use the code with passing parameters).


thanx,
   F.H.A. Masselink



Re: function / trigger problem

From
Stephan Szabo
Date:
On Wed, 13 Jun 2001, F. Masselink wrote:

> Hello,
>
> i've stumbled upon a problem with triggers and functions.
>
> this function doesn't work.
> It gives an error when creating the trigger: set_leentype() does not exist.
>
> CREATE FUNCTION set_leentype (int4) RETURNS opaque AS '
>     BEGIN
>         NEW.type := $1;
>         RETURN NEW;
>     END;
> ' LANGUAGE 'plpgsql';
>
> CREATE TRIGGER is_boek
>     BEFORE INSERT ON boek
>     FOR EACH ROW
>     EXECUTE PROCEDURE set_leentype (1);
>
> but if i use the same function and triggers, with the little
> modification that i don't pass a parameter, it works fine!
>
> does anyone know why this is and does anyone know a solution to this. (I
> want to use the code with passing parameters).

Trigger functions take no arguments and return opaque.  Arguments given
at create trigger time are passed differently.  Read the documentation for
more details.