Сброс счетчика автоматического приращения в 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 поле

813   7  

7 ответов:

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

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

ALTER SEQUENCE product_id_seq RESTART WITH 1453

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

вот команда, которую вы ищете, предполагая, что ваша последовательность для таблицы product является 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. на странице списка таблиц вы можете увидеть TABS как "таблицы", "представления", "последовательности", как это.
  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;

Comments

    Ничего не найдено.