> Is it true that SELECT ... FOR UPDATE only acquires a ROW
> SHARE MODE lock, and that it isn't self-conflicting?
SELECT FOR UPDATE acquires ROW SHARE LOCK on *table* level.
But rows returned by SELECT FOR UPDATE is locked *exclusively*
- so any other transaction which tries to mark the same row
for update (or delete/update it) will be blocked... and will
return *updated* row version after 1st transaction committed.
Vadim