Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Postgresql目录表中检索Postgresql序列缓存值?_Postgresql - Fatal编程技术网

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

如何从Postgresql目录表中检索Postgresql序列缓存值?,postgresql,Postgresql,我使用下面的查询从Postgresql目录表中获取序列对象的完整信息 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

我使用下面的查询从Postgresql目录表中获取序列对象的完整信息

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[如果存在]名称[增量[按]增量]

[MINVALUE MINVALUE |无MINVALUE][MAXVALUE MAXVALUE |无MAXVALUE ]

[开始[用]开始]

[重新启动[[使用]重新启动]]

[高速缓存][[NO]循环]

[由{table_name.column_name | NONE}所有]

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

谢谢


Ravi

对于PostgreSQL 10或更高版本,可以从系统视图或系统表中获取缓存大小:

或者

SELECT seqcache FROM pg_catalog.pg_sequence
  WHERE seqrelid = 'public.s'::regclass;
在第二次查询中省略模式限定(
public
或更一般的模式名称),以自动使用
search\u path
而不是固定模式

对于v10之前的版本,您可以像查询表一样查询序列本身

例如:

CREATE SEQUENCE s CACHE 10;
SELECT cache_value FROM s;
结果:

 cache_value 
-------------
          10
-[ 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 或

结果:

 cache_value 
-------------
          10
-[ 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]-+-------------------- 序列名称 最后一个|u值| 1 起始值| 1 增加| 1 最大值| 9223372036854775807 最小值| 1 缓存|u值| 10 log_cnt|0 是循环的吗 你叫| f吗
这不再适用于10级研究生。你可以用

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

这在最新版本的Postgres中不起作用。@Colin'tHart:谢谢你的提醒,修正了。