Thread: ...

...

From
"Jenny -"
Date:
<div style="background-color:"><div><div><div>Iam trying to acquire rowlevel locks in postgresql. I try doing this:
</div><div> 'select* from students where name='Larry' for update;</div><div>But by looking at the holding array of
proclock, I've noticed that by doing this only <dl><dt>AccessShareLock gets acquired which is a table level lock.
<dt>Howdo I acquire rowlevelock and what fields of Lock or Proclock datastructures indicate it. <dt>Thanks
<dt>Jenny</dl></div></div></div></div><brclear="all" /><hr />Add photos to your messages with <a
href="http://g.msn.com/8HMRENUS/2749??PS=">MSN8. </a> Get 2 months FREE*. 

Re:

From
"scott.marlowe"
Date:
On Wed, 23 Jul 2003, Jenny - wrote:

> Iam trying to acquire rowlevel locks in postgresql. I try doing this:
>  'select * from students where name='Larry' for update;
> But by looking at the holding array of proclock , I've noticed that by doing this only
> AccessShareLock gets acquired which is a table level lock. How do I acquire rowlevelock and
> what fields of Lock or Proclock datastructures indicate it. Thanks Jenny

Hi Jenny, have you read up on the locking methods of postgresql in the 
documentation?  Since postgresql uses an MVCC locking mechanism, locks in 
postgresql aren't really the same as they are in row locking databases 
like db2.

If you set the default transaciton isolation mode in postgresql.conf to 
serializable, and wrap all your work in transactions, then select for 
update should do what you're wanting, but, of course, it's always good to 
crank up two psql monitors and actually prove it to yourself. :-)