Обсуждение: how do i create trigger with params?
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 ...
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