> In contrast the current alternatives appear to be either LOCK 
> the entire table (preventing ALL inserts and selects),

SHARE ROW EXCLUSIVE mode doesn't prevent selects...

> or to create a UNIQUE constraint (forcing complete rollbacks
> and restarts in event of a collision :( ).

Hopefully, savepoints will be in 7.2

> Any comments, suggestions or tips would be welcome. It looks 
> like quite a complex thing to do - I've only just started
> looking at the postgresql internals and the lock manager.

It's very easy to do (from my PoV -:)) We need in yet another
pseudo table like one we use in XactLockTableInsert/XactLockTableWait
- try to look there...

Vadim

Reply via email to