此语法在任何版本的 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
和序列功能。
请注意,setval()
期望(regclass, bigint)
或(regclass, bigint, boolean)
。在上面的例子中,我提供了untyped literals。这也有效。但是,如果您将类型变量提供给函数,则可能需要显式类型转换以满足函数类型解析。像:
SELECT setval(my_text_variable::regclass, my_other_variable::bigint, 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 或更高版本。