> 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) #