zer*_*kms 41 postgresql postgresql-8.4
如何在postgresql 8.4中获取当前序列值?
注意:我需要某种统计信息的值,只需要检索和存储.在手动递增的情况下,与并发和竞争条件无关的任何内容与问题无关.
注2:序列在几个表之间共享
注3:currval由于以下原因不起作用:
ERROR: currval of sequence "<sequence name>" is not yet defined in this session我目前的想法是:解析DDL,这很奇怪
Dan*_*ité 83
你可以使用:
SELECT last_value FROM sequence_name;
更新:这在CREATE SEQUENCE语句中有记录:
虽然您无法直接更新序列,但可以使用如下查询:
SELECT*FROM name;
检查序列的参数和当前状态.特别是,序列的last_value字段显示任何会话分配的最后一个值.(当然,如果其他会话正在主动执行nextval调用,那么在打印时,该值可能已过时.)
Boh*_*ian 17
如果该序列用于表中的唯一 ID,您可以简单地执行以下操作:
select max(id) from mytable;
尽管是 postgres 特有的,但最有效的方法是:
select currval('mysequence');
尽管从技术上讲,这会返回调用 生成的最后一个值,调用者nextval('mysequence')不一定会使用该值(如果未使用,则会在自动增量 id 列中留下间隙)。
| 归档时间: | 
 | 
| 查看次数: | 30848 次 | 
| 最近记录: |