Re: Dyamic updates of NEW with pl/pgsql - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: Dyamic updates of NEW with pl/pgsql
Date
Msg-id 4B979588.4030408@dunslane.net
Whole thread Raw
In response to Re: Dyamic updates of NEW with pl/pgsql  (hubert depesz lubaczewski <depesz@depesz.com>)
Responses Re: Dyamic updates of NEW with pl/pgsql
Re: Dyamic updates of NEW with pl/pgsql
Re: Dyamic updates of NEW with pl/pgsql
List pgsql-hackers

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.

cheers

andrew




pgsql-hackers by date:

Previous
From: hubert depesz lubaczewski
Date:
Subject: Re: Dyamic updates of NEW with pl/pgsql
Next
From: Dag-Erling Smørgrav
Date:
Subject: [patch] build issues on Win32