将序列的值设置为值
这两个命令相同,结果相同
SELECT setval('lcm.samplings_id_seq', 1, false);
ALTER SEQUENCE lcm.samplings_id_seq RESTART WITH 1;
但是要更改顺序,您似乎需要是所有者... 对于另一个,在序列上更新授予似乎没问题。
在此用例中还有其他原因要使用alter sequence吗?
答案 0 :(得分:2)
从ALTER SEQUENCE
上的documentation:
与setval调用相反,对序列的RESTART操作是 交易并阻止并发交易获取 同一序列中的数字。如果那不是所需的模式 操作,应使用setval。
如果您希望在执行更新时阻止该序列的任何使用,那么您想使用ALTER SEQUENCE
方法。如果您只需要重置计数器,并且可以使用该序列处理其他事务,那么可以使用第一个示例,使用setval
。