[EMAIL PROTECTED] (Stephan Szabo) writes:

> On Tue, 28 Sep 2004, Randy Yates wrote:
>
>> Michael Fuhr <[EMAIL PROTECTED]> writes:
>>
>> > On Tue, Sep 28, 2004 at 01:30:08PM +0000, Randy Yates wrote:
>> >> Randy Yates <[EMAIL PROTECTED]> writes:
>> >> >
>> >> > I'm confused. Where is the lock? Is it on the 1 record in the model table?
>> >
>> > Yes.
>> >
>> >> > If so, why is that record locked? Is it possible in Postgresql to update
>> >> > the primary key of a record?
>> >
>> > When you insert a row that has a foreign key reference, PostgreSQL
>> > does a SELECT FOR UPDATE on the referenced row in the foreign table;
>> > the lock prevents other transactions from changing the referenced
>> > row before this transaction completes.  Unfortunately it also
>> > prevents other transactions from acquiring a lock on the same row,
>> > so those transactions will block until the transaction holding the
>> > lock completes.
>>
>> Well, yeah - sure it does. Given that the locking mechanism's
>> granularity is record-level, it MUST if it is to guarantee referential
>> integrity.
>
> But it doesn't need to prevent other transactions that want to just see if
> the row is there from continuing (as opposed to ones that want to actually
> modify that row). We just simply don't have that lock currently.

I see the light. You mean it would be nice to be able to have a "LOCK-FOR-UPDATE-ONLY"
lock as well as a "LOCK-FOR-UPDATE-OR-READ" lock, but all you have now is
"LOCK-FOR-UPDATE-OR-READ" and that gets applied even when you don't care if
someone else reads the record?
-- 
%  Randy Yates                  % "So now it's getting late,
%% Fuquay-Varina, NC            %    and those who hesitate
%%% 919-577-9882                %    got no one..."
%%%% <[EMAIL PROTECTED]>           % 'Waterfall', *Face The Music*, ELO
http://home.earthlink.net/~yatescr

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to