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 по дате отправления:

Предыдущее
От: "Julie Hunt"
Дата:
Сообщение: Functions and tablenames
Следующее
От: Dileep Mathew
Дата:
Сообщение: ...