Этот синтаксис недопустим в любой версии PostgreSQL:
ALTER SEQUENCE payments_id_seq LASTVALUE 22
Это будет работать:
ALTER SEQUENCE payments_id_seq RESTART WITH 22;
и эквивалентно:
SELECT setval('payments_id_seq', 22, FALSE);
Подробнее в текущем руководстве ALTER SEQUENCE
и последовательности функций .
Обратите внимание, что setval()
ожидает либо (regclass, bigint)
или (regclass, bigint, boolean)
. В приведенном выше примере я предоставляю нетипизированные литералы . Это тоже работает. Но если вы передаете типизированные переменные в функцию, вам может потребоваться явное приведение типов, чтобы удовлетворить разрешению типа функции. Подобно:
SELECT setval(my_text_variable::regclass, my_other_variable::bigint, FALSE);
Для повторных операций вас могут заинтересовать:
ALTER SEQUENCE payments_id_seq START WITH 22; -- set default
ALTER SEQUENCE payments_id_seq RESTART; -- without value
START [WITH]
хранит номер по умолчанию RESTART
, который используется для последующих RESTART
вызовов без значения. Для последней части вам нужен Postgres 8.4 или новее.
setval()
есть как минимум два аргумента.