Postgres手动改变序列

我试图设置一个序列到一个特定的值。

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)