[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 メーリングリストの案内