From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
---|---|
To: | depesz(at)depesz(dot)com |
Cc: | 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-10 12:50:16 |
Message-ID: | 4B979588.4030408@dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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.
cheers
andrew
From | Date | Subject | |
---|---|---|---|
Next Message | Dag-Erling Smørgrav | 2010-03-10 14:22:14 | [patch] build issues on Win32 |
Previous Message | hubert depesz lubaczewski | 2010-03-10 11:38:36 | Re: Dyamic updates of NEW with pl/pgsql |