Я хотел бы заставить поле автоматического увеличения таблицы к некоторому значению, я попытался с этим:
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
команда, которая вам нужна:Вы можете увидеть последовательности в вашей базе данных, используя
\ds
команду в psql. Если вы сделаете это\d product
и посмотрите на ограничение по умолчанию для вашего столбца,nextval(...)
вызов также определит имя последовательности.источник
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
, где "seq" - это буквальный текст, и вы вводите число для #. Не пренебрегайте подчеркиванием. :-)ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
1453
, вы должныRESTART WITH 1454
.Вот команда, которую вы ищете, предполагая, что ваша последовательность для таблицы product is product_id_seq:
источник
Следующая команда делает это автоматически для вас: Это также удалит все данные в таблице. Так что будьте осторожны.
источник
TABLE
Ключевое слово является излишним.TRUNCATE someTable RESTART IDENTITY;
достаточно.TRUNCATE someTable RESTART IDENTITY CASCADE;
?Чтобы установить счетчик последовательности:
Если вы не знаете имя последовательности, используйте
pg_get_serial_sequence
функцию:Параметры - это имя таблицы и имя столбца.
Или просто введите
\d product
вpsql
командной строке:источник
- Изменить начальное значение последовательности
То же самое, но динамично:
Я согласен, что использование SELECT вызывает беспокойство, но оно работает.
Источник: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
источник
brew services restart postgresql
Конвертировано из комментария для удобства посетителей
Из этого сообщения не ясно, каков правильный синтаксис. Это:
источник
если вы хотите сбросить автоинкремент из графического интерфейса, выполните следующие действия.
источник
Если у вас есть таблица со столбцом IDENTITY, для которой вы хотите сбросить следующее значение, вы можете использовать следующую команду:
источник
sequence
или вы НЕ можете усечь таблицу. Я думаю, что это лучший ответЧтобы сбросить автоинкремент, вы должны получить имя последовательности, используя следующий запрос.
Синтаксис:
Пример:
Запрос вернет имя последовательности autoid как «Demo_autoid_seq». Затем используйте следующий запрос для сброса autoid
Синтаксис:
Пример:
источник
Для получения идентификатора последовательности используйте
Это даст вам секвестрский идентификатор как tableName_ColumnName_seq
Для получения последнего номера семян используйте
или если вы знаете идентификатор последовательности, используйте его напрямую.
Это даст вам последний номер семени
Для сброса номера семян используйте
источник
Используйте этот запрос, чтобы проверить, что такое ключ последовательности со схемой и таблицей,
Используйте этот запрос для увеличения значения приращения один за другим,
При вставке в таблицу в качестве ключа будет использоваться следующее увеличенное значение (111).
Используйте этот запрос, чтобы установить конкретное значение в качестве увеличенного значения
При вставке в таблицу в качестве ключа будет использовано следующее увеличенное значение (121).
источник
Обратите внимание, что если у вас есть имя таблицы с '_', оно удаляется в имени последовательности.
Например, имя таблицы: столбец user_tokens: id Имя последовательности: usertokens_id_seq
источник