1

Postgres 内のテーブルに対してを実行する\d+と、テーブル スキーマとインデックス、およびそれを FK として参照する他のテーブルが一覧表示されます。例:

    Table "public.foo_table"
   Column   | Type |   Modifiers   | Storage  | Description 
------------+------+---------------+----------+-------------
 id         | text |               | extended | 
 foo        | text |               | extended | 
 bar        | text |               | extended | 
Indexes:
    "foo_table_id_idx" btree (id)
    "foo_table_foobar_idx" btree (foo,bar)
Foreign-key constraints:
    "foo_table_bar_fk" FOREIGN KEY (bar) REFERENCES public.bar_table(id)
Referenced by:
    TABLE "public.bar_table" CONSTRAINT "bar_table_foo_fk" FOREIGN KEY (foo) REFERENCES public.foo_table(foo)
Has OIDs: no

$dbh->statistics_info(...)インデックス情報を取得するために何かを行うことができます。FK情報(参照と参照元)を取得するのに似たものはありますか?


私の次のオプションは、->do()コマンドを発行するか、システム テーブルを照会することのようです。

4

2 に答える 2

1

私がこれまでに見つけたもの:

$dbh->foreign_key_info( pk_cat, pk_schema, pk_tbl
                      , fk_cat, fk_schema, fk_tbl      );

# FK References
$dbh->foreign_key_info( undef , undef    , undef   
                      , undef , undef    , $table_name );

# FK Referenced By
$dbh->foreign_key_info( undef , undef    , $table_name 
                      , undef , undef    , undef       );

## Putting the schema/catalog info only ensures you are hitting the intended 
##    table. If you have dupicate tables, or your table is not in the public 
##    schema it's probably a good idea to include the schema.
## Catalog is generally unnecessary for Postgres
于 2012-04-16T13:50:31.663 に答える
0

オプションを指定して psql を実行すると、 (およびその他の) メタデータ要求-Eに応答するために実行されるすべてのクエリが表示されます。\dそこからコピー/貼り付けして、必要なクエリを取得するのは非常に簡単です。

于 2012-04-16T14:14:10.260 に答える