duplicate sequence, it is possible?

Started by Anibal David Acostaover 14 years ago3 messagesgeneral
Jump to latest
#1Anibal David Acosta
aa@devshock.com

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!

#2Alban Hertroys
haramrae@gmail.com
In reply to: Anibal David Acosta (#1)
Re: duplicate sequence, it is possible?

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.

#3Vincent de Phily
vincent.dephily@mobile-devices.fr
In reply to: Alban Hertroys (#2)
Re: duplicate sequence, it is possible?

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