我正在尝试将序列设置为特定值。
SELECT setval('payments_id_seq'), 21, true
这会给出一个错误:
ERROR: function setval(unknown) does not exist
使用ALTER SEQUENCE
似乎也不起作用?
ALTER SEQUENCE payments_id_seq LASTVALUE 22
如何做到这一点?
参考:https://www.postgresql.org/docs/current/static/functions-sequence.html
发布于 2012-01-05 23:32:00
括号放错了位置:
SELECT setval('payments_id_seq', 21, true); # next value will be 22
否则,您将使用一个参数调用setval
,而它需要两个或三个参数。
这与SELECT setval('payments_id_seq', 21)
相同
发布于 2018-03-26 21:53:02
使用select setval('payments_id_seq', 21, true);
setval
包含3个参数:
下一个参数是sequence_name
nextval
setval第三个参数中true或false的用法如下:
SELECT setval('payments_id_seq', 21); // Next nextval will return 22
SELECT setval('payments_id_seq', 21, true); // Same as above
SELECT setval('payments_id_seq', 21, false); // Next nextval will return 21
为了避免sequence name,next sequence value的硬编码,正确处理空列表,您可以使用以下方法:
SELECT setval(pg_get_serial_sequence('table_name', 'id'), coalesce(max(id), 0)+1 , false) FROM table_name;
其中table_name
是表的名称,id
是表的primary key
发布于 2012-01-05 23:31:17
select设置name(‘sequence_name’,sequence_value)
https://stackoverflow.com/questions/8745051
复制相似问题