[pgsql-jp: 29897] Re: Sequenceの管理用カタログってありますか?

sugita @ sra.co.jp sugita @ sra.co.jp
2003年 5月 15日 (木) 14:40:29 JST


From: "Iso, Toshitaka" <toshitaka.iso @ hp.com>
Subject: [pgsql-jp: 29888] Re: Sequenceの管理用カタログってありますか?
Date: Wed, 14 May 2003 22:44:27 +0900

;;; 杉田さん。
;;; いつも大変お世話になっております。

  こちらこそです。

;;; >   カラム情報については、マニュアルの説明やソースコードから、ひとつのシーケンスなら、 
;;; >     =# select * from 'シーケンス名';
;;; > でどうでしょう? クエリーを組み立てれば、全部を表示できます。
;;; 
;;; select 'select * from '||relname||' union all' from pg_class where relkind='S'
;;; でSQLを作ってとも考えてみたのですが、できればViewのようなものを作って管理したいと考えています。

  View ではありませんけれど、スクリプトで、このような感じではどうでしょう。

$ psql -t -A -F ' ' -c '\ds' | while read relname rest ; do echo "union"; echo "select * from $relname" ; done | tail +2 | psql
  sequence_name  | last_value | increment_by |      max_value      | min_value | cache_value | log_cnt | is_cycled | is_called 
-----------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------
 seq             |          1 |            1 | 9223372036854775807 |         1 |           1 |       1 | f         | f
 table1_code_seq |          2 |            1 | 9223372036854775807 |         1 |           1 |      32 | f         | t
(2 rows)

$ 

;;; > pg_class を見てシーケンスのリレーションのカラム情報を表示させればできます。
;;; 
;;; Ver7.2.1のpg_classには以下のカラムがあるのですが、「シーケンスのリレーションのカラム情報」
;;; とはどのカラムに当たるのか、お手数ですがお教えいただけたら幸いです。

  シーケンスの情報はそれぞれのシーケンスを SELECT すると分かります。

=# \d seq
     Sequence "seq"
    Column     |  Type   
---------------+---------
 sequence_name | name
 last_value    | bigint
 increment_by  | bigint
 max_value     | bigint
 min_value     | bigint
 cache_value   | bigint
 log_cnt       | bigint
 is_cycled     | boolean
 is_called     | boolean

=# 


Kenji Sugita                                      



pgsql-jp メーリングリストの案内