On Mon, Sep 03, 2001 at 03:47:35PM -0400, Alvaro Herrera wrote:
> On Mon, 3 Sep 2001, Francesco Casadei wrote:
>
> > I want to execute an INSERT query that may fail due to a primary key constraint
> > check. The primary key is on a field whose value is generated randomly by
> > another C function.
>
> Wouldn't it be easier if you just used a sequence to generate the
> primary key, if you just want uniqueness?
>
> > Is it possible to wrap the insert into a function that checks for failures and
> > retry the insert until success? Something like this:
> >
> > function blah
> > {
> > do {
> > cod = generate code;
> > execute insert with cod as primary key;
> > } while (! errors);
> > }
>
> Any error will abort the transaction. You can't avoid this. Perhaps you
> can try inserting the value outside the transaction, and then open it to
> do whatever you want with the value inserted.
>
> > Is there a way to disable this behaviour?
>
> No.
>
> --
> Alvaro Herrera (<alvherre[@]atentus.com>)
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://www.postgresql.org/search.mpl
>
> end of the original message
Mmmmm... I don't remember why I chose not to use a sequence! Actually, it seems
to me a good idea. I will think about it. Thank you for your suggestion.
Francesco Casadei