Re: BUG #18324: Duplicate value when I insert values in PK column

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: mael(dot)villat(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #18324: Duplicate value when I insert values in PK column
Date: 2024-02-02 15:16:57
Message-ID: d7029174bff4de270155dc838504553b38f8e6c1.camel@cybertec.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Fri, 2024-02-02 at 13:05 +0000, PG Bug reporting form wrote:
> I have a table called mdt_prestation with the following column:
> colId integer NOT NULL GENERATED BY DEFAULT AS IDENTITY
>
> I have a timesheet app with only one query that INSERT values in this table
> (extract from the psql log):
> INSERT INTO myTable (Client, Employee)VALUES('1150','185') RETURNING colId
>
> I have about 35 users that uses this app and sometimes we have the following
> error:
> ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique «
> myTable_pkey» (error duplicate value key, unique constraint violation, )
>
> DETAIL: La clé « (colid)=(1704236) » existe déjà  (key 1704236 already
> exist)
>
> Most of the time we don't have this issue. And the sequence is correct
> (sequence = max id value). I'm sure that nobody insert manuel id.
> So I believe that there is a concurrency issue in postgresql server with the
> sequence when we insert a value.

That is very unlikely.

I recommend that you use GENERATED ALWAYS AS IDENTITY, so that the problem
cannor happen any more.

Yours,
Laurenz Albe

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2024-02-02 15:48:56 Re: Aw: BUG #18312: libpq: PQsetdbLogin() not thread-safe
Previous Message David G. Johnston 2024-02-02 13:45:00 Re: BUG #18324: Duplicate value when I insert values in PK column