首页 文章

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

提问于
浏览
1

我使用下面的查询从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 | NO MAXVALUE] [START [WITH] start] [RESTART [[WITH] restart]] [CACHE cache] [[NO] CYCLE] [OWNED BY {table_name.column_name |没有 } ]

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

谢谢,

拉维

2 回答

  • 1

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

    例如:

    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
    
  • 2

    这不再适用于Postgres 10.您可以使用

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

相关问题