On Wed, Mar 10, 2010 at 07:50:16AM -0500, Andrew Dunstan wrote:
> hubert depesz lubaczewski wrote:
> >On Tue, Mar 09, 2010 at 06:59:31PM +0100, Pavel Stehule wrote:
> >>2010/3/9 strk <strk@keybit.net>:
> >>>How can a pl/pgsql trigger change the
> >>>values of dynamic fields in NEW record ?
> >>>
> >>>By "dynamic" I mean that the field name
> >>>is a variable in the trigger context.
> >>>
> >>>I've been told it's easy to do with pl/perl but
> >>>I'd like to delive a pl/pgsql solution to have
> >>>less dependencies.
> >>It isn't possible yet
> >
> >well, it's possible. it's just not nice.
> >
> >http://www.depesz.com/index.php/2010/03/10/dynamic-updates-of-fields-in-new-in-plpgsql/
>
> Using an hstore in 9.0 it's not too bad, Try something like:
>
> CREATE OR REPLACE FUNCTION dyntrig()
> RETURNS trigger
> LANGUAGE plpgsql
> AS $function$
>
> declare
> hst hstore;
> begin
> hst := hstore(NEW);
> hst := hst || ('foo' => 'bar');
> NEW := populate_record(NEW,hst);
> return NEW;
> end;
>
> $function$;
>
> But this question probably belongs on -general rather than -hackers.
This is, by the way, an excellent argument for including hstore in
core in 9.1. :)
Cheers,
David.
--
David Fetter <david@fetter.org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david.fetter@gmail.com
iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics
Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate