Re: functions for triggers: passing parameters

From: Stephan Szabo <sszabo(at)megazone23(dot)bigpanda(dot)com>
To: Nico <nicod(at)tiscalinet(dot)it>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: functions for triggers: passing parameters
Date: 2001-03-09 20:03:07
Message-ID: Pine.BSF.4.21.0103091158140.81537-100000@megazone23.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On Fri, 9 Mar 2001, Nico wrote:

> What is wrong?
>
> CREATE FUNCTION set_value(text) RETURNS OPAQUE AS '
> DECLARE
> val ALIAS FOR $1;
> BEGIN
> NEW.inf := val;
> RETURN NEW;
> END;
> ' LANGUAGE 'plpgsql';
>
>
> CREATE TABLE t1 (
> id serial,
> info text
> );
> CREATE TRIGGER t1_set_val BEFORE INSERT ON t1
> FOR EACH ROW EXECUTE PROCEDURE set_value('some info');
>
> ============================
> psql 7.1beta5 result:
>
>
> CREATE
> psql:function_for_trigger.sql:15: NOTICE: CREATE TABLE will create implicit
> sequence 't1_id_seq' for SERIAL column 't1.id'
> psql:function_for_trigger.sql:15: NOTICE: CREATE TABLE/UNIQUE will create
> implicit index 't1_id_key' for table 't1'
> CREATE
> psql:function_for_trigger.sql:17: ERROR: CreateTrigger: function set_value()
> does not exist
> test=#
>
> (the language plpgsql is already loaded)

Right, because triggers take arguments differently. Trigger functions
must return opaque and take no arguments. Arguments passed at create
trigger time are passed in via TG_ARGV[] (number in TG_NARGS i believe)

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Ben 2001-03-09 20:09:29 what's going on here?
Previous Message Stephan Szabo 2001-03-09 19:57:33 Re: inheritance and foreign key