如何从Postgresql目录表中检索Postgresql序列缓存值?

时间:2013-08-06 16:07:35

标签: postgresql

我已使用以下查询从Postgresql目录表中获取Sequence对象的完整信息

select s.sequence_name, s.start_value, s.minimum_value, s.maximum_value, s.increment, s.cycle_option 
from information_schema.sequences s 
 where s.sequence_schema='schema1' 

无法获得的另一个属性值是“缓存”值。

使用Postgresql 9.2

以下是带缓存的序列的DDL语法

  

ALTER SEQUENCE [IF EXISTS]名称[INCREMENT [BY]增量]

     

[MINVALUE minvalue | NO MINVALUE] [MAXVALUE maxvalue |没有MAXVALUE   ]

     

[START [WITH] start]

     

[RESTART [[WITH] restart]]

     

[CACHE缓存] [[NO] CYCLE]

     

[OWNED BY {table_name.column_name |没有}]

是否有任何Postgres函数来获取此序列缓存值?

谢谢,

拉​​维

2 个答案:

答案 0 :(得分:2)

您可以使用其名称查询序列,就像它是一个表一样。

例如:

CREATE SEQUENCE s CACHE 10;
SELECT cache_value FROM s;

结果:

 cache_value 
-------------
          10
(1 row)

或者

\x
SELECT * FROM s;

结果:

-[ RECORD 1 ]-+--------------------
sequence_name | s
last_value    | 1
start_value   | 1
increment_by  | 1
max_value     | 9223372036854775807
min_value     | 1
cache_value   | 10
log_cnt       | 0
is_cycled     | f
is_called     | f

答案 1 :(得分:1)

这在Postgres 10中不再起作用。您可以使用

select seqcache from pg_sequence where seqrelid = 's'::regclass;