Thus spake Tom Lane
> darcy@druid.net (D'Arcy J.M. Cain) writes:
> >>>> I looked and the docs and it seems that this should work instead.
> >>
> >>>> CREATE FUNCTION make_date(date, int, int, int)
> >>>> RETURNS opaque
> >>>> AS '/usr/pgsql/modules/make_date.so'
> >>>> LANGUAGE 'c';
> >>>> CREATE TRIGGER make_edate
> >>>> BEFORE INSERT OR UPDATE ON bgroup
> >>>> FOR EACH ROW
> >>>> EXECUTE PROCEDURE make_date('edate', 'aniv', 'emon', 'eyear');
> >>
> >> No. Trigger procedures never take explicit arguments --- whatever
> >> you may have stated in the CREATE TRIGGER command gets passed in
> >> in the trigger data structure. (A pretty bizarre and ugly choice
> >> if you ask me, but not worth breaking existing code to change...)
>
> > Hmm. Are you saying that the above is wrong?
>
> Yes.
>
> > I took it right from the web page documentation.
>
> What web page? http://www.postgresql.org/docs/postgres/triggers.htm
> still says what it always has (complete with bad grammar ;-)):
>
> The trigger function must be created before the trigger is
> created as a function taking no arguments and returns opaque.
OK, so I went back to basically what I had before.
CREATE FUNCTION make_date() RETURNS opaque AS '/usr/pgsql/modules/make_date.so' LANGUAGE
'c';
CREATE TRIGGER make_dates BEFORE INSERT OR UPDATE ON bgroup FOR EACH ROW EXECUTE PROCEDURE make_date (edate,
aniv,emon, eyear);
INSERT INTO bgroup (bname, client_id, actypid, aniv, emon, eyear, pmon, pyear)VALUES ('guest', 1000, 1, 1, 1, 2000, 1,
2000);
And here is what I get.
ERROR: fmgr_info: function 24224: cache lookup failed
--
D'Arcy J.M. Cain <darcy@{druid|vex}.net> | Democracy is three wolves
http://www.druid.net/darcy/ | and a sheep voting on
+1 416 425 1212 (DoD#0082) (eNTP) | what's for dinner.