Ta składnia nie jest poprawna w żadnej wersji PostgreSQL:
ALTER SEQUENCE payments_id_seq LASTVALUE 22
To by działało:
ALTER SEQUENCE payments_id_seq RESTART WITH 22;
i jest równoważny:
SELECT setval('payments_id_seq', 22, FALSE);
Więcej w aktualnym podręczniku funkcjiALTER SEQUENCE
i sekwencji .
Należy pamiętać, że setval()
spodziewa się, albo (regclass, bigint)
czy (regclass, bigint, boolean)
. W powyższym przykładzie dostarczam literały bez typów . To też działa. Ale jeśli podajesz zmienne typowane do funkcji, możesz potrzebować rzutowania typu jawnego, aby spełnić rozdzielczość typu funkcji. Lubić:
SELECT setval(my_text_variable::regclass, my_other_variable::bigint, FALSE);
W przypadku powtarzających się operacji możesz być zainteresowany:
ALTER SEQUENCE payments_id_seq START WITH 22; -- set default
ALTER SEQUENCE payments_id_seq RESTART; -- without value
START [WITH]
przechowuje domyślny RESTART
numer, który służy do kolejnych RESTART
połączeń bez wartości. Do ostatniej części potrzebujesz Postgres 8.4 lub nowszy.
setval()
ma co najmniej dwa argumenty.