Сброс счетчика автоматического приращения в postgres

Я хотел бы принудить поле автоматического приращения таблицы к некоторому значению, я попытался с этим:

ALTER TABLE product AUTO_INCREMENT = 1453

и

ALTER SEQUENCE product  RESTART WITH 1453;
ERROR:  relation "your_sequence_name" does not exist

Я новичок в postgres : (

у меня есть таблица product С Id и name поле

7 ответов


если вы создали таблицу product С id столбец, тогда последовательность не просто называется product, а product_id_seq (то есть ${table}_${column}_seq).

это вам нужно:

ALTER SEQUENCE product_id_seq RESTART WITH 1453

вы можете увидеть последовательности в вашей базе данных, используя \ds команда в psql. Если вы это сделаете \d product и посмотрите на ограничение по умолчанию для столбца nextval(...) call также укажет имя последовательности.


вот команда, которую вы ищете, предполагая, что ваша последовательность для таблицы product_id_seq:

изменить последовательность product_id_seq перезапуск с 1453;


следующая команда делает это автоматически для вас: Это также удалит все данные в таблице. Так что будьте осторожны.

TRUNCATE TABLE someTable RESTART IDENTITY;

установить счетчик последовательности:

setval('product_id_seq', 1453);

если вы не знаете имя последовательности использовать :

select pg_get_serial_sequence('product', 'id');
 pg_get_serial_sequence 
------------------------
 public.product_id_seq

параметры имя таблицы и имя столбца.

или просто выдать \d product на psql запрос:

=> \d product
                         Table "public.product"
 Column |  Type   |                      Modifiers                       
--------+---------+------------------------------------------------------
 id     | integer | not null default nextval('product_id_seq'::regclass)
 name   | text    | 

преобразовано из комментария для удобства посетителей

из этого сообщения не ясно, какой правильный синтаксис. Это:

ALTER SEQUENCE product_id_seq RESTART WITH 1453;

Если вы хотите сброс автоинкремент из GUI, затем следуйте этим шагам.

  1. перейти к вашей база данных
  2. нажать на кнопку Public
  3. в разделе таблицы можно увидеть вкладки как "таблицы", "представления", "последовательности", как это.
  4. нажать на кнопку последовательности
  5. при нажатии на "последовательности" вы можете увидеть все последовательности список, нажмите на любой, что вы хотите сброс
  6. после этого вы можете увидеть несколько вариантов, таких как "Alter", "Set Value", "Restart", "Reset" и т. д...
  7. затем нажмите на кнопку сброс, затем добавьте одну новую строку.

чтобы сбросить автоматическое приращение, вы должны получить свое имя последовательности, используя следующий запрос.

синтаксис:

SELECT pg_get_serial_sequence(‘tablename’, ‘ columnname‘);

пример:

SELECT pg_get_serial_sequence('demo', 'autoid');

запрос вернет имя последовательности autoid как "Demo_autoid_seq" Затем используйте следующий запрос для сброса autoid

синтаксис:

ALTER SEQUENCE sequenceName RESTART WITH value;

пример:

ALTER SEQUENCE "Demo_autoid_seq" RESTART WITH 1453;