Reset Auto Increment Counter in Postgres

Reset auto increment counter in postgres

If you created the table product with an id column, then the sequence is not simply called product, but rather product_id_seq (that is, ${table}_${column}_seq).

This is the ALTER SEQUENCE command you need:

ALTER SEQUENCE product_id_seq RESTART WITH 1453

You can see the sequences in your database using the \ds command in psql. If you do \d product and look at the default constraint for your column, the nextval(...) call will specify the sequence name too.

Reset Postgres auto-increment value to 0

Seems I've found a handy answer for my question

ALTER SEQUENCE _id_seq RESTART;

Hope this helps

Reset auto increment counter in postgresql

There are no sequences is created in this above questions because you are not added serial or sequence :(as per script). bigint must be bigserial or serial.

If you want to check it the sequence is created or not run this script.

Select column_default 
from information_schema.columns
where table_name = 'categories' and column_name = 'categoryid';

How to reset sequence in postgres and fill id column with new data?

If you don't want to retain the ordering of ids, then you can

ALTER SEQUENCE seq RESTART WITH 1;
UPDATE t SET idcolumn=nextval('seq');

I doubt there's an easy way to do that in the order of your choice without recreating the whole table.

Postgres set auto increment counter to a fixed value

identity (and the somewhat outdated serial) columns are based on sequences.

You can set the sequence associated with such a column using setval()

select setval(pg_get_serial_sequence('table_name', 'column_name'), 1000);

Resetting auto-increment column back to 0 daily

It could be pretty trivial with a cronjob

0 0 * * * echo "SELECT setval('public.my_table_id_seq', 1, false)" | psql -U my_db_user -d my_db_name

Alternately, you could set your "serial" column DEFAULT to call a stored procedure, which would check for a day rollover, reset the sequence if appropriate, and then return the result of nextval().

But other than that, no, I wouldn't expect that there's a magic ALTER SEQUENCE my_seq RESET AT INERVAL '1 day' or anything like that.

Edit: incorporated duckyfuzz's comment.

Primary key not AUTO INCREMENT in the PostgreSQL

Change the data type to serial, which is Postgres's way of spelling auto_increment. If you have a not-NULL integer column with no default, then you will get an error when you attempt an insert.

If you assign a default, then the unique constraint (part of the primary key) will just create a duplicate key error on the second insert.

How to Auto Increment a column in postgres? Like some fixed text after that incrementing number

Use a sequence and a prefix:

CREATE SEQUENCE seq INCREMENT BY 1;

How to use it:

SELECT 
'DAG100H'||lpad(nextval('seq')::text,3,'0'),
'DAG100H'||lpad(nextval('seq')::text,3,'0');

?column? | ?column?
------------+------------
DAG100H001 | DAG100H002
(1 row)

You might wanna add it directly to your table:

CREATE TABLE t (
id text DEFAULT 'DAG100H'||lpad(nextval('seq')::text,3,'0'),
txt text);

So that you can insert values ..

INSERT INTO t (txt) VALUES ('foo'),('bar');

.. and they get the id you want

SELECT * FROM t;

id | txt
------------+-----
DAG100H001 | foo
DAG100H002 | bar
(2 rows)
  • Mind the comments section of your question, as they make a very good point! Consider using a normal numeric sequence and just add the prefix to the client by concatenating it with the column: 'DAG100H'||lpad(nextval('seq')::text,3,'0'), ..


Related Topics



Leave a reply



Submit