Re: lock problem

From: Stephan Szabo <sszabo(at)megazone(dot)bigpanda(dot)com>
To: sarlav kumar <sarlavk(at)yahoo(dot)com>
Cc: pgsqlperform <pgsql-performance(at)postgresql(dot)org>
Subject: Re: lock problem
Date: 2004-12-04 17:34:31
Message-ID: 20041204093004.D37548@megazone.bigpanda.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On Sat, 4 Dec 2004, sarlav kumar wrote:

> Thanks for the information on replication tools!!
> Now, I have a question regarding locking tables and updating tables
> that have a relationship to the locked table.
>
> I opened up two pgsql windows logged in using same userid.
> Let's say I lock a table "customerdata" on one window.
> begin;
> lock table customerdata;
>
> Then in the other window,I want to make an update to table "customer".
> begin;
> update customer set status=0 where id=111;
>
> The relation ship between the two tables is as follows
> customerdata.uid is FK on customer.id. There are no triggers that will
> try to update customerdata table when the above update statement is
> issued.
>
> My problem is the update does not continue unless the lock on
> customerdata is released. Is it because the lock statement does a lock
> on all related tables? Is it possible to lock only the particular table
> we want to lock and not the related tables?

The no action foreign key triggers grab a Row Share on the referencing
table which conflicts with the Exclusive lock that LOCK TABLE takes by
default. Depending on what you're trying to prevent, you may be able to
ask lock table for a lesser lock (see the list and descriptions here:
http://www.postgresql.org/docs/7.4/static/explicit-locking.html#LOCKING-TABLES
).

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Josh Berkus 2004-12-04 19:14:18 Re: Improve BULK insertion
Previous Message Cott Lang 2004-12-04 17:22:24 Re: Alternatives to Dell?