> A solution, could be to query for the existance of the PK, just before the
> insertion. But there is a little span between the test and the
> insertion, where another insertion from another transaction could void
> the existance test. Any clever ideas on how to solve this? Using
> triggers maybe? Other solutions?
>
All you need to do is use a sequence. If you set the sequence to be the
primary key with a default value of nextval(seq_name) then you will never
have a collision. Alternatly if you need to know that number before you
start inserting you can select next_val(seq_name) before you inser and use
that. By the way the datatype serial automates exactly what I described.