bug in setval?

Started by Christopher Kings-Lynnealmost 23 years ago3 messages
#1Christopher Kings-Lynne
chriskl@familyhealth.com.au

When I create a new table with a serial column, the first row defaults to
inserting '1'.

If I delete all the rows from the table and want to reset the sequence, I
can't:

ERROR: users_health_types_type_id_seq.setval: value 0 is out of bounds
(1,9223372036854775807)

How do I set the sequence to have next value = 1? Surely the bounds should
begin at zero?

Chris

#2Joe Conway
mail@joeconway.com
In reply to: Christopher Kings-Lynne (#1)
Re: bug in setval?

Christopher Kings-Lynne wrote:

How do I set the sequence to have next value = 1? Surely the bounds should
begin at zero?

No; see:
http://www.us.postgresql.org/users-lounge/docs/7.3/postgres/functions-sequence.html

Notice the is_called flag. I think this does what you want:
SELECT setval('foo', 1, false);

Joe

#3Dave Page
dpage@vale-housing.co.uk
In reply to: Christopher Kings-Lynne (#1)
Re: bug in setval?

It's rumoured that Christopher Kings-Lynne once said:

When I create a new table with a serial column, the first row defaults
to inserting '1'.

If I delete all the rows from the table and want to reset the sequence,
I can't:

ERROR: users_health_types_type_id_seq.setval: value 0 is out of bounds
(1,9223372036854775807)

How do I set the sequence to have next value = 1? Surely the bounds
should begin at zero?

That's bugged me for ages as well. I just never got round to asking about
it...
Regards, Dave.