Search Postgresql Archives

Re: Serials jumping

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Matt A. wrote:
I did not know that about every call to nextval, but
that does make sense.

I need a way to return the new ID of the SERIAL column
on INSERT to add the related rows into the proper
tables explictly. Similiar to how I could use
@@identity to retrive the value in sql2000.

Once you insert into the table that has the serial you
can use currval('sequencename') to return the value of the
id just inserted.

The caveat is that you must do it in order e.g.,

insert
currval
insert
currval

But this will work as long as you are within the same transaction.

Sincerely,

Joshua D. Drake


The only ways I saw was nextval or currval? Is there a
best practice for returning the new identities value?
I'd prefer it in one call if possible.




Thank you.


--- Alban Hertroys <alban@xxxxxxxxxxxxxxxxx> wrote:


Matt A. wrote:

I have a serial column on a test box DB. I'm
using "select nextval('some_seq') as id" to insert

a

id in sequence. It doesn't return the next value

but

at least 4 or so (random) ahead of the current
value. Is this to be expected?

You probably did some extra selects on the sequence
somewhere, or the sequence is set to increment by a number >1.


Is this the most efficient way to retreive an id

value

for insert a row then insert the resulting row

into

the related tables?

Why don't you just use the default value of the
serial type? You can do that by leaving the column out of the insert query.


Is there a more efficient/proper way? I would like

all

my records to increment by 1 if possible. I'd be

very

grateful to read your opinion.

Sequences increment at every call of nextval.
Doesn't matter whether you used that value for anything or not, it always increments. Even if you rollback the transaction or interupt the query.

Sequences ensure that multiple concurrent inserts
never get the same number back from them, so that you don't get "unique constraint violation"'s.
They're not designed to always increment by 1.

Regards,

--
Alban Hertroys
alban@xxxxxxxxxxxxxxxxx

magproductions b.v.

T: ++31(0)534346874
F: ++31(0)534346876
M:
I: www.magproductions.nl
A: Postbus 416
   7500 AK Enschede

//Showing your Vision to the World//

---------------------------(end of
broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq





		
____________________________________________________
Start your day with Yahoo! - make it your home page http://www.yahoo.com/r/hs
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq


--
Your PostgreSQL solutions company - Command Prompt, Inc. 1.800.492.2240
PostgreSQL Replication, Consulting, Custom Programming, 24x7 support
Managed Services, Shared and Dedicated Hosting
Co-Authors: plPHP, plPerlNG - http://www.commandprompt.com/

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux