2012-01-05 15 views

Respuesta

64

Los paréntesis están fuera de lugar:

setval('payments_id_seq', 21, true) 

lo contrario que está llamando setval con un solo argumento, mientras que requiere dos o tres.

+0

Tienes razón, gracias – stef

+1

¿Qué significa el último argumento "verdadero"? – inafalcao

+1

'true' significa que el siguiente valor será el número proporcionado + 1, en este caso 22.' false' significa que el siguiente valor sería el número proporcionado, o 21. Por defecto, setval se comportará como si fuera 'true' fue elegido. Más detalles: https://www.postgresql.org/docs/9.6/static/functions-sequence.html –

8
setval('sequence_name', sequence_value) 
97

Supongo que en realidad no está utilizando la obsoleta versión 7.4 de PostgreSQL y solo hace referencia a esta versión del manual por error.

Esta sintaxis no es válida en cualquier versión de PostgreSQL:


             
  
    ALTER SEQUENCE payments_id_seq LASTVALUE 22 
  

esto funcionaría:

ALTER SEQUENCE payments_id_seq RESTART WITH 22; 

y es equivalente a:

SELECT setval('payments_id_seq', 22, FALSE); 

El actualmanual has more.


Para las operaciones repetidas que podría estar interesado en:

ALTER SEQUENCE payments_id_seq START WITH 22; -- set default 
ALTER SEQUENCE payments_id_seq RESTART;  -- without value 

START [WITH] almacena un defecto RESTART número, que se utiliza para posteriores RESTART llamadas sin valor. Necesita Postgres 8.4 o posterior para la última parte.

Cuestiones relacionadas