1

我在 PostgreSQL 数据库中使用序列将行插入表中。

在创建序列时,我从未CYCLE在它们上使用过该选项。我的意思是它们可以生成相当大的数字(据我记得大约为 2^63),我真的不明白为什么我希望序列回到零。所以我的问题是:

CYCLE创建序列时应该何时使用?

你有一个有意义的例子吗?

4

1 回答 1

1

似乎序列可以CYCLE用于其他目的,而不是用于主键生成。

这是在不需要其值的唯一性的情况下;实际上恰恰相反,当期望值在一段时间后循环回来并重复自己时。

例如:

  • 当生成数字时,无论出于何种原因(例如实现“宾果”游戏),必须返回初始值并在某个时间点重复自身。
  • 当序列是一个临时标识符,将持续很短的时间,并且在其生命周期内是唯一的。
  • 当字段很小时——或者可以接受有限数量的值——并且它们是否重复并不重要。
  • 当实体中有另一个字段可以识别它,并且序列值用于其他内容时。
  • 当一个实体有一个复合唯一键并且序列值只是它的一部分时。
  • 当使用序列值在大集合上生成均匀分布的值时,尽管这几乎不是随机分配值。
  • 任何其他循环数生成。
于 2018-04-20T17:50:13.247 回答