gpt4 book ai didi

postgresql - setval 和 alter sequence restart 命令之间的区别

转载 作者:行者123 更新时间:2023-11-29 14:29:51 36 4
gpt4 key购买 nike

将序列的值设置为一个值

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

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

ALTER SEQUENCE lcm.samplings_id_seq RESTART WITH 1;

但要执行更改序列,您似乎需要成为所有者...对于另一个,按顺序更新授权似乎没问题。

对于这个用例,是否还有其他原因需要使用 alter sequence?

最佳答案

来自documentationALTER SEQUENCE 上:

In contrast to a setval call, a RESTART operation on a sequence is transactional and blocks concurrent transactions from obtaining numbers from the same sequence. If that's not the desired mode of operation, setval should be used.

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

关于postgresql - setval 和 alter sequence restart 命令之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53447552/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com