FUNCTION序列操作函数
pg_get_sequence_data
返回有关序列的信息。last_value 是最后一次写入磁盘的序列值。如果使用了缓存,这个值可能大于从序列中最后一次发出的值。is_called 表示该序列是否已经被使用过。page_lsn 是对应于最近一次修改此序列关系的 WAL 记录的 LSN。如果指定的关系 OID 不存在、该关系不是序列、当前用户没有序列上的 SELECT 权限、该序列是另一会话的临时序列,或者该序列是备库上的不记录 WAL 的序列,此函数将返回由 NULL 值组成的一行。
Returns information about the sequence.
序列操作函数 引入 19 现存至 20 devel 1 条签名 0 次签名变更 开发版
- 分组
- 序列操作函数
- 签名数
- 1 条
- 引入版本
- 19
- 状态
- 现存
- 签名变更
- 未变过
- 本版来源
- 同版手册译文
版本轨迹
相对 PostgreSQL 19 无变化。 PostgreSQL 20 开发版尚未定稿:函数清单取自固定英文手册快照,中文说明取自本站同版手册,正式发布前仍可能变化。
说明
last_value 是最后一次写入磁盘的序列值。如果使用了缓存,这个值可能大于从序列中最后一次发出的值。is_called 表示该序列是否已经被使用过。page_lsn 是对应于最近一次修改此序列关系的 WAL 记录的 LSN。如果指定的关系 OID 不存在、该关系不是序列、当前用户没有序列上的 SELECT 权限、该序列是另一会话的临时序列,或者该序列是备库上的不记录 WAL 的序列,此函数将返回由 NULL 值组成的一行。pg_get_sequence_data ( regclass ) → record ( last_value bigint, is_called bool, page_lsn pg_lsn )返回有关序列的信息。
last_value 是最后一次写入磁盘的序列值。如果使用了缓存,这个值可能大于从序列中最后一次发出的值。is_called 表示该序列是否已经被使用过。page_lsn 是对应于最近一次修改此序列关系的 WAL 记录的 LSN。如果指定的关系 OID 不存在、该关系不是序列、当前用户没有序列上的 SELECT 权限、该序列是另一会话的临时序列,或者该序列是备库上的不记录 WAL 的序列,此函数将返回由 NULL 值组成的一行。签名
PostgreSQL 20 devel 里 pg_get_sequence_data 的 1 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。中文说明来自同版本手册与审阅译文,悬停可查看每条说明的来源。
-
pg_get_sequence_data(regclass) →record(last_valuebigint,is_calledbool,page_lsnpg_lsn)返回有关序列的信息。last_value是最后一次写入磁盘的序列值。如果使用了缓存,这个值可能大于从序列中最后一次发出的值。is_called表示该序列是否已经被使用过。page_lsn是对应于最近一次修改此序列关系的 WAL 记录的 LSN。如果指定的关系 OID 不存在、该关系不是序列、当前用户没有序列上的SELECT权限、该序列是另一会话的临时序列,或者该序列是备库上的不记录 WAL 的序列,此函数将返回由 NULL 值组成的一行。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的签名。
-
PostgreSQL 19 ← 18 新增此函数
PostgreSQL 19 起可用
签名矩阵
每条签名在给出了签名的 2 个版本里的存在情况;方格指向该版的签名。只在正文里提到此函数、没有给出签名的版本不列进来,上面的版本轨迹里仍然有它们。签名文本在 PostgreSQL 13 前后写法不同,跨越那一跳的同一条签名会显示成两行。
存在 不存在
同组函数
| 函数 | 签名 | 主签名 | 版本变动 | 最近变更 |
|---|---|---|---|---|
currval |
1 | currval ( regclass ) → bigint |
8.11 次 | |
| 返回当前会话中最近一次针对该序列调用 nextval 所获得的值。(如果当前会话从未针对该序列调用过 nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过 nextval,结果都是可预测的。 | 现存 | |||
lastval |
1 | lastval () → bigint |
— | |
| 返回 nextval 在当前会话中最近返回的值。这个函数与 currval 相同,不同之处在于它没有使用序列名作为参数,而是引用当前会话中 nextval 最近应用到的序列。如果在当前会话中还没有调用 nextval,那么调用 lastval 是一个错误。 | 现存 | |||
nextval |
1 | nextval ( regclass ) → bigint |
8.11 次 | |
| 将序列对象推进到下一个值并返回该值。这个操作是原子的:即使多个会话并发地执行 nextval,每个会话也会安全地接收到不同的序列值。如果序列对象是用默认参数创建的,则连续的 nextval 调用将返回以 1 开始的连续值。其他行为可以通过在 CREATE SEQUENCE 命令中使用适当的参数获得。 | 现存 | |||
pg_get_sequence_data |
1 | pg_get_sequence_data ( regclass ) → record ( last_value bigint, is_called bool, page_lsn pg_lsn ) |
— | |
| 返回有关序列的信息。last_value 是最后一次写入磁盘的序列值。如果使用了缓存,这个值可能大于从序列中最后一次发出的值。is_called 表示该序列是否已经被使用过。page_lsn 是对应于最近一次修改此序列关系的 WAL 记录的 LSN。如果指定的关系 OID 不存在、该关系不是序列、当前用户没有序列上的 SELECT 权限、该序列是另一会话的临时序列,或者该序列是备库上的不记录 WAL 的序列,此函数将返回由 NULL 值组成的一行。 | 现存 | |||
setval |
1 | setval ( regclass, bigint [, boolean ] ) → bigint |
8.12 次 | |
| 设置序列对象的当前值,并可选地设置其 is_called 标志。双参数形式将序列的 last_value 字段设置为指定的值,并将其 is_called 字段设置为 true,意味着下一个 nextval 将在返回值之前推进序列。currval 将报告的值也设置为指定的值。在三参数形式中,is_called 可以设置为 true 或 false。true 与双参数形式具有相同的效果。如果设置为 false,下一个 nextval 将返回指定的值,序列推进从再下一次调用 nextval 开始。而且,currval 报告的值在这种情况下不会改变。例如: | 现存 | |||