I believe you probably want a "select ... for update" clause here.
This (assuming postgresql is sensible) will only lock those rows
that were returned from the select, rather than the entire table.
Have a look at the following URL for more information regarding
syntax.
http://www.postgresql.org/idocs/index.php?sql-select.html
Cheers,
Pete.