Diese Syntax ist in keiner Version von PostgreSQL gültig :
ALTER SEQUENCE payments_id_seq LASTVALUE 22
Das würde funktionieren:
ALTER SEQUENCE payments_id_seq RESTART WITH 22;
und entspricht:
SELECT setval('payments_id_seq', 22, FALSE);
Mehr im aktuellen Handbuch für ALTER SEQUENCE
und Sequenzfunktionen .
Beachten Sie, setval()
dass entweder erwartet(regclass, bigint)
oder(regclass, bigint, boolean)
. Im obigen Beispiel stelle ich untypisierte Literale bereit . Das funktioniert auch. Wenn Sie der Funktion jedoch typisierte Variablen zuführen, benötigen Sie möglicherweise explizite Typumwandlungen , um die Auflösung des Funktionstyps zu erfüllen. Mögen:
SELECT setval(my_text_variable::regclass, my_other_variable::bigint, FALSE);
Für wiederholte Operationen könnten Sie interessiert sein an:
ALTER SEQUENCE payments_id_seq START WITH 22; -- set default
ALTER SEQUENCE payments_id_seq RESTART; -- without value
START [WITH]
speichert einen Standard RESTART
, die für nachfolgende RESTART
Anrufe ohne Wert verwendet wird. Für den letzten Teil benötigen Sie Postgres 8.4 oder höher.
setval()
mindestens zwei Argumente hat.