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 17 无变化。
说明
nextval 所获得的值。(如果当前会话从未针对该序列调用过 nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过 nextval,结果都是可预测的。currval ( regclass ) → bigint返回当前会话中最近一次针对该序列调用
nextval 所获得的值。(如果当前会话从未针对该序列调用过 nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过 nextval,结果都是可预测的。签名
PostgreSQL 18.7 里 currval 的 1 条签名,按上游手册顺序排列。参数名用斜体,类型用弱化色, 之后是返回类型。中文说明来自同版本手册与审阅译文,悬停可查看每条说明的来源。
-
currval(regclass) →bigint返回当前会话中最近一次针对该序列调用nextval所获得的值。(如果当前会话从未针对该序列调用过nextval,则会报错。)由于返回的是会话局部值,无论其他会话是否在当前会话调用之后执行过nextval,结果都是可预测的。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的签名。
-
PostgreSQL 13 ← 12 手册重排
这一跳手册重排了函数表的写法,签名文本整体改写,只记函数的增删,不逐条比较签名。
-
PostgreSQL 8.1 ← 8.0 签名变更
currval ( regclass ) → bigintcurrval ( text ) → bigint说明更新 -
PostgreSQL 7.2 ← 7.1 新增此函数
PostgreSQL 7.2 起可用
签名矩阵
每条签名在给出了签名的 26 个版本里的存在情况;方格指向该版的签名。只在正文里提到此函数、没有给出签名的版本不列进来,上面的版本轨迹里仍然有它们。签名文本在 PostgreSQL 13 前后写法不同,跨越那一跳的同一条签名会显示成两行。
存在 不存在
| 签名 | 7.2 | 7.3 | 7.4 | 8.0 | 8.1 | 8.2 | 8.3 | 8.4 | 9.0 | 9.1 | 9.2 | 9.3 | 9.4 | 9.5 | 9.6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
currval ( text ) → bigint |
存在 | 存在 | 存在 | 存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 | 不存在 |
currval ( regclass ) → bigint |
不存在 | 不存在 | 不存在 | 不存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 | 存在 |
同组函数
| 函数 | 签名 | 主签名 | 版本变动 | 最近变更 |
|---|---|---|---|---|
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 报告的值在这种情况下不会改变。例如: | 现存 | |||