Thread: problems creating functions and triggers

problems creating functions and triggers

From
Werner Fraga
Date:
I am having problems creating functions and triggers in Postgres 6.5.3
on Linux Mandrake 6.1.

1. I noticed that some examples show the LANGUAGE in the CREATE FUNCTION
command can be 'plpgsql'. However, if I try using this instead of 'sql', I get
ERROR: Unrecognized language specified in a CREATE FUNCTION ...
However, I read somewhere that triggers don't work with LANGUAGE 'sql'.

Am I missing some part of Postgres installation?

2. If I create a function successfully (with LANGUAGE 'sql', then try to
create a trigger using this function, I get

create function checkStationID (int4) returns int4 as
'select Station.StationID from Station where Station.StationID = $1;'
language 'SQL';
CREATE

create trigger ifStationExists BEFORE INSERT OR UPDATE ON Employee FOR EACH ROW EXECUTE PROCEDURE checkStationID
(stationID);
ERROR:  CreateTrigger: function checkstationid() does not exist

Is this because LANGUAGE should be 'plpgsql'? The function does exist; I can
run it using 'Select checkStationID (5)'.

3. Is there anywhere I can find a list of the system tables? (that section in
Bruce's book is still empty...)


Re: [SQL] problems creating functions and triggers

From
Tom Lane
Date:
Werner Fraga <werner.fraga@computalog.com> writes:
> 1. I noticed that some examples show the LANGUAGE in the CREATE FUNCTION
> command can be 'plpgsql'. However, if I try using this instead of 'sql', I get
> ERROR: Unrecognized language specified in a CREATE FUNCTION ...

You need to run the "createlang" script to install plpgsql in the
particular database you are using.

If you want plpgsql to be available by default in a given installation,
you can install it in template1 --- subsequently created DBs will be
clones of template1.

> 3. Is there anywhere I can find a list of the system tables? (that section in
> Bruce's book is still empty...)

\dS in psql...
        regards, tom lane