Ответ 1
Скобки скорректированы:
setval('payments_id_seq', 21, true)
В противном случае вы вызываете setval
с одним аргументом, тогда как для этого требуется два или три.
Я пытаюсь установить последовательность на определенное значение.
SELECT setval('payments_id_seq'), 21, true
Это дает ошибку:
ERROR: function setval(unknown) does not exist
Использование ALTER SEQUENCE
тоже не работает?
ALTER SEQUENCE payments_id_seq LASTVALUE 22
Как это можно сделать?
Ссылка: http://www.postgresql.org/docs/7.4/interactive/functions-sequence.html
Скобки скорректированы:
setval('payments_id_seq', 21, true)
В противном случае вы вызываете setval
с одним аргументом, тогда как для этого требуется два или три.
Я предполагаю, что вы на самом деле не используете безнадежно устаревшую версию PostgreSQL 7.4 и ошибочно ссылаетесь только на эту версию руководства.
Этот синтаксис недействителен в любой версии 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 payments_id_seq START WITH 22; -- set default
ALTER SEQUENCE payments_id_seq RESTART; -- without value
START [WITH]
хранит номер по умолчанию RESTART
, который используется для последующих вызовов RESTART
без значения. Для последней части вам нужны Postgres 8.4 или новее.
setval('sequence_name', sequence_value)