setval和alter sequence重新启动命令之间的区别

时间:2018-11-23 13:25:02

标签: postgresql

将序列的值设置为值

这两个命令相同,结果相同

SELECT setval('lcm.samplings_id_seq', 1, false); 

ALTER SEQUENCE lcm.samplings_id_seq RESTART WITH 1;

但是要更改顺序,您似乎需要是所有者... 对于另一个,在序列上更新授予似乎没问题。

在此用例中还有其他原因要使用alter sequence吗?

1 个答案:

答案 0 :(得分:2)

ALTER SEQUENCE上的documentation

  

与setval调用相反,对序列的RESTART操作是   交易并阻止并发交易获取   同一序列中的数字。如果那不是所需的模式   操作,应使用setval。

如果您希望在执行更新时阻止该序列的任何使用,那么您想使用ALTER SEQUENCE方法。如果您只需要重置计数器,并且可以使用该序列处理其他事务,那么可以使用第一个示例,使用setval