[pgsql-jp: 31391] Re: tableの制約の抽出
ISHIDA Akio
iakio @ pjam.jpweb.net
2003年 10月 31日 (金) 15:38:16 JST
こんにちは。石田@苫小牧市です。
Ichiro Nakata wrote:
> 中田と申します。
>
> 単刀直入に言うと、テーブルの制約を抽出したりするのは可能でしょうか?
>
>
> まず、環境として、redhat9,postgres7.3.2を使用しています。
>
> 詳しく言うと、
> テーブルに例えば check制約をかけて、その後何かしらの方法で、その制約を表
> 示もしくわ、抽出できないでしょうか?
> コマンドで「\d table名」を実行することカラムのタイプやテーブルの制約を
> 確認はできるのですが、その制約だけを表示させたいと思っています。
>
どんな風にとりだしたいかにもよりますが、この手のことをする場合、
私は pg_dump のソースを見ます。(ソースを見なくても pg_dump
そのものを使うだけで用が足りる場合もありますが。)
src/bin/pg_dump/pg_dump.c に、その名も、
dumpConstraints(Archive *fout, TableInfo *tblinfo, int numTables)
という関数があります。この中では、
appendPQExpBuffer(query,
"SELECT oid, conname, "
"pg_catalog.pg_get_constraintdef(oid) as condef "
"FROM pg_catalog.pg_constraint "
"WHERE conrelid = '%s'::pg_catalog.oid "
"AND contype = 'f'",
tbinfo->oid);
というクエリを発行しています。
--
ISHIDA Akio<iakio @ pjam.jpweb.net>
pgsql-jp メーリングリストの案内