Thread: how do i create trigger with params?

how do i create trigger with params?

From
hubert depesz lubaczewski
Date:
i would like to create c-type trigger which is used with params.
so i created function:
CREATE function dfti(text) RETURNS opaque as
'/home/users/pgdba/work/lib/dfti.so' language 'C';
o.k. created
byt when i try to:
CREATE trigger dfti_trg after INSERT or UPDATE or DELETE on newstexts for each
row execute procedure dfti ('newstexts');
i get:
psql:create.sql:9: ERROR:  CreateTrigger: function dfti() does not exist

which is of course true. function dfti() doesn't exist, but i wanted to use
dfti(text)!

if i change function creation not to have (text) trigger is properly created,
but it fails (killing backend) on insert.
what did i wrong?

depesz

--
hubert depesz lubaczewski                          http://www.depesz.pl/
------------------------------------------------------------------------
     najwspanialszą rzeczą jaką dało nam nowoczesne społeczeństwo,
      jest niesamowita wręcz łatwość unikania kontaktów z nim ...

Re: how do i create trigger with params?

From
"Richard Huxton"
Date:
From: "hubert depesz lubaczewski" <depesz@depesz.pl>

> i would like to create c-type trigger which is used with params.
> so i created function:
> CREATE function dfti(text) RETURNS opaque as
> '/home/users/pgdba/work/lib/dfti.so' language 'C';
> o.k. created
> byt when i try to:
> CREATE trigger dfti_trg after INSERT or UPDATE or DELETE on newstexts for
each
> row execute procedure dfti ('newstexts');
> i get:
> psql:create.sql:9: ERROR:  CreateTrigger: function dfti() does not exist
>
> which is of course true. function dfti() doesn't exist, but i wanted to
use
> dfti(text)!


I'll quote Stephen Szabo from a couple of days ago (check archive for full
details)
>
> Right, because triggers take arguments differently.  Trigger functions
> must return opaque and take no arguments.  Arguments passed at create
> trigger time are passed in via TG_ARGV[] (number in TG_NARGS i believe)
>

I think there's probably an example of this in contrib/noupdate.

- Richard Huxton