Re: concurrency in stored procedures - Mailing list pgsql-general

From Merlin Moncure
Subject Re: concurrency in stored procedures
Date
Msg-id b42b73150703231422n2ea5dda5wb1edf5dfd1aa0b2d@mail.gmail.com
Whole thread Raw
In response to Re: concurrency in stored procedures  (Ottavio Campana <ottavio@campana.vi.it>)
Responses Re: concurrency in stored procedures  (Ottavio Campana <ottavio@campana.vi.it>)
List pgsql-general
On 3/23/07, Ottavio Campana <ottavio@campana.vi.it> wrote:
> Ottavio Campana wrote:
> > What would you to in order to be sure that one function or a part of it
> > is atomically executed?
>
> would it be correct something like? or how would you write this?
>
> create or replace function my_function () returs integer as
> $$
> declare
>   ...
>   status boolean;
>   ...
> begin
>   ...
>   loop
>     begin
>       set transaction isolation level serializable;
>       ...
>       do_something();
>       ...
>       status := true;
>     exception serialization_failure
>       status := false;
>     end;
>
>     if status then exit;
>   end loop;
>   ...
>   return 0;
> end
> $$ language plpgsql

you can also use advisory locks if you want to implement 'critical
section' inside a plpgsql function.

see:
http://merlinmoncure.blogspot.com/2006/12/advisory-locks-part-2.html

merlin

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: Insert fail: could not open relation with OID 3221204992
Next
From: Ottavio Campana
Date:
Subject: Re: concurrency in stored procedures