怎样才能得到 postgreql 8.4中的当前序列值?
注意: 我需要一些统计数据的值,只需要检索和存储。在手动递增的情况下,与并发和竞态条件无关的任何内容都与问题无关。
注2: 该序列在多个表之间共享
注3: currval不能工作是因为:
currval
ERROR: currval of sequence "<sequence name>" is not yet defined in this session
我目前的想法是解析 DDL,这很奇怪
如果序列用于表中的唯一 id,您可以简单地这样做:
select max(id) from mytable;
最有效的方法是:
select currval('mysequence');
尽管从技术上讲,这将返回调用 nextval('mysequence')时生成的最后一个值,调用者可能不一定是 用过(如果未使用,将在自动递增 id 列中留下空白)。
nextval('mysequence')
你可使用:
SELECT last_value FROM sequence_name;
更新 : 创建序列声明中记录了这一点:
虽然不能直接更新序列,但可以使用查询 例如: 从名称中选择 * ; 参数和当前状态 特别是,序列的 Last _ value字段显示 任何会话分配的最后一个值。(当然,这个值可能 如果其他会议正在积极进行,那么在打印出来的时候就已经过时了 做下一步调用。)
虽然不能直接更新序列,但可以使用查询 例如:
从名称中选择 * ;
参数和当前状态 特别是,序列的 Last _ value字段显示 任何会话分配的最后一个值。(当然,这个值可能 如果其他会议正在积极进行,那么在打印出来的时候就已经过时了 做下一步调用。)
在某个时间点,一个秘密函数(即 非法移民... 还是)正是这样做的:
SELECT pg_sequence_last_value('schema.your_sequence_name');