Сброс счетчика автоматического приращения в 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, затем следуйте этим шагам.
- перейти к вашей база данных
- нажать на кнопку Public
- в разделе таблицы можно увидеть вкладки как "таблицы", "представления", "последовательности", как это.
- нажать на кнопку последовательности
- при нажатии на "последовательности" вы можете увидеть все последовательности список, нажмите на любой, что вы хотите сброс
- после этого вы можете увидеть несколько вариантов, таких как "Alter", "Set Value", "Restart", "Reset" и т. д...
- затем нажмите на кнопку сброс, затем добавьте одну новую строку.
чтобы сбросить автоматическое приращение, вы должны получить свое имя последовательности, используя следующий запрос.
синтаксис:
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;