How to Reset Sequence After Truncating Table in PostgreSQL

Published October 15, 2025

If you use PostgreSQL and have truncated a table with the hope that your primary key serial or sequence has been reset to 1, nope, it does not work that way.

How to reset the table sequence after truncating a table in PostgreSQL How to reset the table sequence after truncating a table in PostgreSQL

Scenario

If you are coming from MySQL or MariaDB or any other database system, when you truncate a table, the primary key ID automatically gets reset with a starting ID of 1.

Not in PostgreSQL. In Postgres, the current sequence value is retained.

Assume you have a table like this:

CREATE TABLE accounts (
    id SERIAL PRIMARY KEY,
    name character varying(80 NOT NULL,
    username character varying(20) UNIQUE NOT NULL,
    password character varying(80) NOT NULL,
    created_at timestamp DEFAULT now(),
    updated_at timestamp DEFAULT now()
);

You added a million rows to it. And then, you truncated it and added a new row.

The new row starts with ID 1,000,001 instead of 1.

How will you reset the sequence numbering?

Solution: Reset the sequence after running TRUNCATE on a table

In PostgreSQL, the command to reset the sequence after truncating a table is TRUNCATE table_name RESTART IDENTITY;

In our case, we will do this:

TRUNCATE TABLE accounts RESTART IDENTITY;

After you run that command, the first insert will take an ID of 1.

Reset sequence with truncate TABLE followed by alter sequence

You can also do this in two steps, first with a regular truncate command, followed by an alter sequence command.

TRUNCATE TRUNCATE TABLE  accounts;
ALTER SEQUENCE accounts_id_seq RESTART WITH 1;

How to find the sequence in PostgreSQL

If you do not know the sequence entity, \ds will show you a list of sequences.

Another way is if you know the table name, the format is TABLE_COLUMN_seq to it.

The table name is accounts, so the sequence for id would most likely be accounts_id_seq.

Conclusion

Hopefully, this worked for you. If you are unable to reset a Postgres sequence after truncating it, let me know in the comments or by email. Thanks for reading.

Related Posts

If you have any questions, please contact me at arulbOsutkNiqlzziyties@gNqmaizl.bkcom. You can also post questions in our Facebook group. Thank you.

Disclaimer: Our website is supported by our users. We sometimes earn affiliate links when you click through the affiliate links on our website.

Last Updated: October 15, 2025.     This post was originally written on October 15, 2025.