Re: Does the block of code in a stored procedure execute

From: <btober(at)seaworthysys(dot)com>
To: <dmitry(at)openratings(dot)com>
Cc: <btober(at)seaworthysys(dot)com>, <pgsql-general(at)postgresql(dot)org>
Subject: Re: Does the block of code in a stored procedure execute
Date: 2003-07-30 03:32:12
Message-ID: 65394.66.212.203.144.1059535932.squirrel@$HOSTNAME
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


> btober(at)seaworthysys(dot)com wrote:
>
>>Thank you very much.
>>
>>Further clarification on two points, though, please.
>>
>>1) When I add the FOR UPDATE clause to the SELECT statement, do also
>> have to add a COMMIT statement somewhere?
>>
> *no* Don't even think about it.:-)
> You are running this from inside a trigger, right?

So, to re-iterate then, will simply adding the FOR UPDATE clause to my
original select statement make the procedure as originally written with
the SELECT first multi-user safe?

>
>>2) I don't see how doing UPDATE first helps. What if the other user,
>> calling the same function, happens to have their UPDATE statement
>> execute between my UPDATE and SELECT statements? Then we again both
>> get the same new "sequence" value, don't we?
>>
> When you UPDATE a row, it gets locked (just like when you do
> select...for update), and stays locked until the end of the
> transaction. So, once you UPDATE it, nobody else can until your
> transaction is finished.
>
> I hope, it helps...

Now I see. That helps a lot. I was not aware of that behavior. Thank you.

~Berend Tober

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Castle, Lindsay 2003-07-30 04:01:01 SQL SUM query limited by dates
Previous Message Stephan Szabo 2003-07-30 03:14:45 Re: Auto-increment not really working