LOCK TABLE question

From: Neil Conway <nconway(at)klamath(dot)dyndns(dot)org>
To: PostgreSQL General <pgsql-general(at)postgresql(dot)org>
Subject: LOCK TABLE question
Date: 2000-09-17 04:15:37
Message-ID: 20000917001537.A2880@klamath.dyndns.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

I have a situation that (I think) requires using 'LOCK TABLE', but I'm
having a little difficulty wrapping my head around the idea.

I have a fairly large table with a *lot* of access (the majority of all
queries in the app use this table). One of the fields in this table
is a path to a file on the filesystem. I want to change the contents
of the file, and thus not allow anyone to use the row which references
the file while the file is being updated. I then want to execute an
'UPDATE' on the table, remove the lock, and allow everything to
continue as normal.

The filesystem I/O (changing the file) is implemented outside of PgSQL -
it's done in the client app.

If at all possible, I'd like to only lock the 1 row that is being
updated. Any database activity should be allowed, unless it refers
to the row currently being updated. If it does (and even if it is
a SELECT), the query on the row should wait until the file has
been updated and the 'UPDATE' run on the DB.

Is this possible? Can I only lock 1 row, or do I have to lock the
entire table? Am I correct in assuming that if a query tries to
access a currently locked table/row, it will just poll until the
row/table is unlocked?

Tell me if you'd like more info - I hope I'm explaining myself clearly.

Thanks in advance,

Neil

--
Neil Conway <neilconway(at)home(dot)com>
Get my GnuPG key from: http://klamath.dyndns.org/mykey.asc
Encrypted mail welcomed

Vegetarians do not love animals... they hate plants.

Browse pgsql-general by date

  From Date Subject
Next Message AlphaByte 2000-09-17 12:32:24 Re: Cant create new users or databases
Previous Message Horst Herb 2000-09-17 04:01:05 inheritance problem