Questa sintassi non è valida in nessuna versione di PostgreSQL:
ALTER SEQUENCE payments_id_seq LASTVALUE 22
Questo funzionerebbe:
ALTER SEQUENCE payments_id_seq RESTART WITH 22;
ed è equivalente a:
SELECT setval('payments_id_seq', 22, FALSE);
Maggiori informazioni nel manuale attuale per ALTER SEQUENCEe funzioni di sequenza .
Si noti che setval()prevede uno (regclass, bigint)o (regclass, bigint, boolean). Nell'esempio sopra sto fornendo letterali non tipizzati . Anche questo funziona. Ma se si alimentano variabili digitate alla funzione, potrebbe essere necessario eseguire cast di tipi espliciti per soddisfare la risoluzione del tipo di funzione. Piace:
SELECT setval(my_text_variable::regclass, my_other_variable::bigint, FALSE);
Per operazioni ripetute potresti essere interessato a:
ALTER SEQUENCE payments_id_seq START WITH 22; -- set default
ALTER SEQUENCE payments_id_seq RESTART; -- without value
START [WITH]memorizza un RESTARTnumero predefinito , che viene utilizzato per le RESTARTchiamate successive senza valore. Per l'ultima parte è necessario Postgres 8.4 o successivo.
setval()abbia almeno due argomenti.