Я хотел бы принудительно ввести значение поля автоматического приращения таблицы, я попытался с этим:
ALTER TABLE product AUTO_INCREMENT = 1453
И
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
Я новичок в postgres:(
У меня есть таблица product
с полем Id
и name
Если вы создали таблицу product
с столбцом id
, то последовательность не просто называется product
, а скорее product_id_seq
(то есть ${table}_${column}_seq
).
Это команда ALTER SEQUENCE
, которая вам нужна:
ALTER SEQUENCE product_id_seq RESTART WITH 1453
Вы можете увидеть последовательности в своей базе данных с помощью команды \ds
в psql. Если вы выполните \d product
и посмотрите на ограничение по умолчанию для своего столбца, вызов nextval(...)
также укажет имя последовательности.
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
, где "seq" - текст литерала, и вы вводите число для #. Не пренебрегайте подчеркиванием. :-)
Вот команда, которую вы ищете, если ваша последовательность для таблицы продуктов - product_id_seq:
ALTER SEQUENCE product_id_seq RESTART WITH 1453;
Следующая команда делает это автоматически для вас: Это также удалит все данные в таблице. Поэтому будьте осторожны.
TRUNCATE TABLE someTable RESTART IDENTITY;
Чтобы установить счетчик последовательности:
setval('product_id_seq', 1453);
Если вы не знаете имя последовательности, используйте функцию pg_get_serial_sequence
:
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;
В reset для автоматического увеличения вам нужно получить имя последовательности, используя следующий запрос.
Синтаксис:
SELECT pg_get_serial_sequence(‘tablename’, ‘ columnname‘);
Пример:
SELECT pg_get_serial_sequence('demo', 'autoid');
Запрос вернет имя последовательности autoid как "Demo_autoid_seq" Затем используйте следующий запрос к reset autoid
Синтаксис:
ALTER SEQUENCE sequenceName RESTART WITH value;
Пример:
ALTER SEQUENCE "Demo_autoid_seq" RESTART WITH 1453;