Ben <bench@xxxxxxxxxxxxxxx> writes: > Doesn't select ... for update only lock the rows returned in the select? Right. > In my case, I'm worried about situations when no rows will be returned > and two separate transactions will try to insert the same key. Pretty much the only thing you can do about that is to take an exclusive table-level lock. This is simple but pretty awful for concurrency (since the lock blocks everyone else from inserting ANY key, not only the one you are inserting). Consider using a sequence object to generate the keys, instead. regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster