From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
Cc: | Craig Ringer <craig(at)postnewspapers(dot)com(dot)au>, Clemens Schwaighofer <clemens(dot)schwaighofer(at)e-graphics(dot)com>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: plpgsql function with update and seeing changed data from outside during run |
Date: | 2011-06-09 14:19:32 |
Message-ID: | 23091.1307629172@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Merlin Moncure <mmoncure(at)gmail(dot)com> writes:
> On Thu, Jun 9, 2011 at 4:46 AM, Craig Ringer
> <craig(at)postnewspapers(dot)com(dot)au> wrote:
>> (as far as I know) It's not possible for a function to see data committed by
>> other transactions since that function began executing, whether or not those
>> other transactions have committed.
> This is not correct. Yes, a snapshot is created, but that doesn't
> prevent you from seeing external changes. I have in fact many times
> relied on being able to block in a pl/pgsql loop and wait for a record
> to be set or something like that.
Note that the function needs to be declared VOLATILE for that to work.
But I believe the OP's question was the other way around: he wanted to
be able to see changes made by a function from elsewhere, before the
function completes. That's not possible, unless you resort to hacks
like using dblink to get the effect of autonomous subtransactions.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Vincent Veyron | 2011-06-09 14:35:58 | Re: what is the best way of storing text+image documents in postgresql |
Previous Message | tv | 2011-06-09 14:06:29 | Re: Write performance on a large database |