Re: Function xxxx() does no exist
От | wieck@debis.com (Jan Wieck) |
---|---|
Тема | Re: Function xxxx() does no exist |
Дата | |
Msg-id | m12fzqU-0003knC@orion.SAPserv.Hamburg.dsh.de обсуждение исходный текст |
Ответ на | Re: Function xxxx() does no exist (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-sql |
> Philippe Lefèvre <ph.l@libertysurf.fr> writes: > > So I created: > > CREATE FUNCTION chk_itheme_proc(int4) RETURNS int4 > > AS 'SELECT COUNT(i_theme) FROM tbl_theme > > WHERE i_theme = $1;' > > LANGUAGE 'sql'; > > > and I created a trigger: > > CREATE TRIGGER chk_itheme_trig BEFORE INSERT OR UPDATE ON tbl_article > > FOR EACH ROW EXECUTE PROCEDURE chk_itheme_proc ('theme'); > > > but I get the message: > > ERROR: CreateTrigger: function chk_itheme_proc() does not exist > > Poorly worded error message, I'd say. You have a function > chk_itheme_proc(int4), but the trigger as you show it requires a > function with a signature of chk_itheme_proc(text) or something close > to it. Those are different functions. > > The error message ought to print out the expected parameter types to > remind you about that... No, trigger procedures in Postgres are allways defined to take no arguments and have a return type "opaque". The main error above is, that the "sql" language cannot be used to define a trigger! Use the PL/pgSQL or PL/Tcl languages instead. They're documented in the programmers manual. Version 7.0 will have PL/Perl too, but I don't know if that one can be used for trigger procs yet. Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #========================================= wieck@debis.com (Jan Wieck) #
В списке pgsql-sql по дате отправления: