Re: Dyamic updates of NEW with pl/pgsql

From: David Fetter <david(at)fetter(dot)org>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>
Cc: depesz(at)depesz(dot)com, Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org, strk(at)keybit(dot)net
Subject: Re: Dyamic updates of NEW with pl/pgsql
Date: 2010-03-12 16:54:56
Message-ID: 20100312165456.GC15080@fetter.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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(at)keybit(dot)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(at)fetter(dot)org> http://fetter.org/
Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter
Skype: davidfetter XMPP: david(dot)fetter(at)gmail(dot)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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2010-03-12 17:13:48 Re: [GENERAL] trouble with to_char('L')
Previous Message Bruce Momjian 2010-03-12 16:54:29 Re: Warning about invalid .pgpass passwords