为什么 Postgres 序列不同步?

Why does a Postgres sequence go out of sync?

提问人:Prabhatika Vij 提问时间:3/7/2023 更新时间:3/7/2023 访问量:502

问:

这篇文章中,我了解到序列在以下情况下可能会不同步:-

  1. 使用 INSERT 脚本导入多行或恢复广泛的数据库;
  2. 使用 setval() 函数手动设置序列的错误值;
  3. 通过在 INSERT 查询中手动指定 id 字段,将新记录插入到表中。

我了解 2 和 3 如何导致序列不同步,但我不明白 1 如何导致序列不同步问题。我尝试在网上找到它,但文章通常会描述不同步问题、何时发生以及如何解决。

有人可以帮我理解这一点吗?谢谢。

PostgreSQL 序列

评论

0赞 3/7/2023
1 与 3 相同,只是行数更多
0赞 Prabhatika Vij 3/7/2023
@a_horse_with_no_name 感谢您的回复。但是,如果在 1 中,我们在不手动指定 id 字段的情况下导入许多行怎么办?我不明白 1 和 3 怎么是一样的。我可能错过了什么。
1赞 Laurenz Albe 3/7/2023
我也看不出大(除非它覆盖生成的主键的默认值)如何导致问题。要么耸耸肩,要么问作者是什么意思。INSERT
1赞 3/7/2023
@PrabhatikaVij:如果手动为 (ID) 列提供值,则序列将不同步。执行此操作时插入多少行无关紧要。
1赞 jjanes 3/8/2023
也许他想表达的观点是,你不需要手动完成一个INSERT来引起问题,你可以通过一个你刚刚运行的脚本来完成,而没有太注意。插入/复制的大小并不重要,但也许脚本越大,你就越不可能对它所做的每一件事给予足够的关注。

答: 暂无答案