Thread: duplicate sequence, it is possible?

duplicate sequence, it is possible?

From
"Anibal David Acosta"
Date:

Hi everyone.

 

I have a table with a PK, this table has a lot of insert per second (100 ~ 150 insert /sec)

Sometimes, a get a duplicate key error, but ID is generated from a function (VOLATILE). This function has just one line (select nextval('XXX'))

 

Is possible that this function return same ID for two diff call?

 

Postgres version is 9.0

 

Thanks!

 

Re: duplicate sequence, it is possible?

From
Alban Hertroys
Date:
On 19 Sep 2011, at 2:57, Anibal David Acosta wrote:

> Hi everyone.
>
> I have a table with a PK, this table has a lot of insert per second (100 ~ 150 insert /sec)
> Sometimes, a get a duplicate key error, but ID is generated from a function (VOLATILE). This function has just one
line(select nextval('XXX')) 
>
> Is possible that this function return same ID for two diff call?
>
> Postgres version is 9.0
>
> Thanks!

Very unlikely.
Are you certain that you're not just hitting pre-existing rows that have ID's higher than the starting ID of your
sequence?Or that there isn't another process inserting rows without using the sequence? 

Alban Hertroys

--
Screwing up is an excellent way to attach something to the ceiling.


Re: duplicate sequence, it is possible?

From
Vincent de Phily
Date:
On Monday 19 September 2011 08:19:18 Alban Hertroys wrote:
> On 19 Sep 2011, at 2:57, Anibal David Acosta wrote:
> > Hi everyone.
> >
> > I have a table with a PK, this table has a lot of insert per second (100
> > ~ 150 insert /sec) Sometimes, a get a duplicate key error, but ID is
> > generated from a function (VOLATILE). This function has just one line
> > (select nextval('XXX'))
> >
> > Is possible that this function return same ID for two diff call?
> >
> > Postgres version is 9.0
> >
> > Thanks!
>
> Very unlikely.
> Are you certain that you're not just hitting pre-existing rows that have
> ID's higher than the starting ID of your sequence? Or that there isn't
> another process inserting rows without using the sequence?

Also, why wrap nextval('XXX') instead of using it directly ? Unless your
function does more than "select nextval('XXX')", you're just making your code
harder to read and slightly slower.

--
Vincent de Phily