On 3/23/07, Ottavio Campana <[EMAIL PROTECTED]> 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

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

Reply via email to