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)