↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 函数百科 / 序列操作函数

FUNCTION序列操作函数

currval

返回当前会话中最近一次针对该序列调用 nextval 所获得的值。(如果当前会话从未针对该序列调用过 nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过 nextval,结果都是可预测的。

Returns the value most recently obtained by nextval for this sequence in the current session.

序列操作函数 引入 7.2 现存至 20 devel 1 条签名 1 次签名变更

签名数
1 条
引入版本
7.2
状态
现存
签名变更
1 次
本版来源
同版手册译文

PostgreSQL 18.7 手册 · 9.17 序列操作函数 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

说明

返回当前会话中最近一次针对该序列调用 nextval 所获得的值。(如果当前会话从未针对该序列调用过 nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过 nextval,结果都是可预测的。
currval ( regclass ) → bigint
返回当前会话中最近一次针对该序列调用 nextval 所获得的值。(如果当前会话从未针对该序列调用过 nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过 nextval,结果都是可预测的。

签名

PostgreSQL 18.7 里 currval 的 1 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。中文说明来自同版本手册与审阅译文,悬停可查看每条说明的来源。

  1. currval ( regclass ) → bigint

    返回当前会话中最近一次针对该序列调用 nextval 所获得的值。(如果当前会话从未针对该序列调用过 nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过 nextval,结果都是可预测的。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的签名。

  1. PostgreSQL 13 ← 12 手册重排

    这一跳手册重排了函数表的写法,签名文本整体改写,只记函数的增删,不逐条比较签名。

  2. PostgreSQL 8.1 ← 8.0 签名变更

    currval ( regclass ) → bigint currval ( text ) → bigint 说明更新

  3. PostgreSQL 7.2 ← 7.1 新增此函数

    PostgreSQL 7.2 起可用

签名矩阵

每条签名在给出了签名的 26 个版本里的存在情况;方格指向该版的签名。只在正文里提到此函数、没有给出签名的版本不列进来,上面的版本轨迹里仍然有它们。签名文本在 PostgreSQL 13 前后写法不同,跨越那一跳的同一条签名会显示成两行。

存在 不存在

签名 7.27.37.48.08.18.28.38.49.09.19.29.39.49.59.61011121314151617181920
currval ( text ) → bigint 存在 存在 存在 存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在 不存在
currval ( regclass ) → bigint 不存在 不存在 不存在 不存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在 存在

同组函数

函数 签名 主签名 版本变动 最近变更
SEQUENCE MANIPULATION FUNCTIONS 序列操作函数 5 个 ↗
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 报告的值在这种情况下不会改变。例如: 现存