[pgsql-jp: 30213] Re: 外部キーの構成を知る方法

cdb01160 cdb01160 @ hkg.odn.ne.jp
2003年 6月 20日 (金) 15:05:00 JST


  佐藤です。

私が調べた範囲では、7.2.3 ですと、
pg_trigger テーブルの ri 制約と呼ばれているのが、
外部キー制約の事だと思います。

列名を見つけるのが大変で、
tgargs bytea   トリガーに渡されるそれぞれ NULL で終結した引数文字列
の文字列を分析しなければ得られません。

列名が、英語の場合 tgargs の内容は以下のようになっていて、
 <unnamed>\000tb3\000tb1\000UNSPECIFIED\000int1\000id\000
この場合、
tb3 の int1 列に tb1 の id 列が、外部キーとなって入っています。
tb3 int1 REFERENCES tb1 id のようにテーブルを定義したわけです。

日本語の列名を使っていると、
 <unnamed>\000\276\246\311\312\000\273\305\306
\376\244\354\300\350\000UNSPECIFIED\000
\273\305\306\376\244\354\300\350\245\263\241\274\245\311\000\
273\305\306\376\244\354\300\350\245\263\241\274\245\311\000
のようになってしまって、解りにくいのですが、

ここで書かれている数字の意味は、
\000 が、NULL です。
その他の \276,\246 等は EUC 漢字コードの 8進表記になっています。
例えば \273\305 は、「仕入れ先」 の 「仕」 を表しています。

いかがでしょうか?

簡単に引っ張り出せる SQL 文があれば私も知りたいです。
多分、この数字列を日本語にする関数なんかがあるような気がします。

やっぱり、今作っている、「cse のようなもの」をデビューさせようかな?
この辺の情報まで、簡単に見れるようになっています。
(日本語の列名は出ませんけど、、、、、、、)

以上  佐藤賢治





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