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
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 |