Reset PostgreSQL primary key to 1

Viewed 95508

Is there a way to reset the primary key of a PostgreSQL table to start at 1 again on a populated table?

Right now it's generating numbers from 1000000 and up. I want it all to reset and start to 1, keeping all my existing data intact.

5 Answers

TRUNCATE TABLE table_name RESTART IDENTITY;

This will delete all of your data. Maybe some users looking for something like this as I am.

@bluish actually inserting a new record using an auto-incremented primary key, is just like using a sequence explicitly this way:

INSERT INTO MyTable (id, col1, ...) VALUES (MySeq.nextval(), val1, ...)

So, if you want the first id to be 1, you should have to set your sequence to 0. But it's out of bounds, so you must use the ALTER SEQUECE statement. So, if you have a serial field named number in your table menu, for exemple:

ALTER SEQUENCE menu_number_seq RESTART

will make the job perfectly.

@ZootHii TRUNCATE TABLE table_name RESTART IDENTITY CASCADE;

Related