From: | Hannes Dorbath <light(at)theendofthetunnel(dot)de> |
---|---|
To: | David Brain <dbrain(at)bandwidth(dot)com> |
Subject: | Re: EXECUTE in trigger functions. |
Date: | 2008-10-27 18:37:36 |
Message-ID: | 49060A70.1060907@theendofthetunnel.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
David Brain wrote:
> Is there a way of using EXECUTE in trigger functions to to do something
> like:
>
> CREATE OR REPLACE FUNCTION insert_trigger()
> RETURNS trigger AS
> $BODY$
> BEGIN
> EXECUTE('INSERT INTO public_partitions.table_'
> || date_part('year',NEW.eventdate)::VarChar
> || lpad(date_part('month',NEW.eventdate)::Varchar,2,'0')
> || lpad(date_part('day',NEW.eventdate)::Varchar,2,'0')
> || ' VALUES (NEW.*)');
> RETURN NULL;
> END;
> $BODY$
> LANGUAGE 'plpgsql'
>
> This would obviously be very useful for partitioning - however if I try
> this I get:
Execute does execute a given string of SQL. To my knowledge there is no
way you can pass new.* to that statement. What should work is to use
prepare and bind all fields of new.* separately.
http://www.postgresql.org/docs/current/static/sql-prepare.html
--
Best regards,
Hannes Dorbath
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Jochem | 2008-10-27 18:38:22 | Re: Execute Shell script after insert |
Previous Message | Scott Marlowe | 2008-10-27 18:35:45 | Re: Execute Shell script after insert |