Andy Lesterの情報を使用して、私は必要な情報を取得するために次のクエリを用意することができました。
外部キーが参照表の取得:
SELECT cl2.relname AS ref_table
FROM pg_constraint as co
JOIN pg_class AS cl1 ON co.conrelid=cl1.oid
JOIN pg_class AS cl2 ON co.confrelid=cl2.oid
WHERE co.contype='f' AND cl1.relname='TABLENAME'
ORDER BY cl2.relname;
は、表からの眺めやルールを参照するテーブルを取得します。
SELECT cl_d.relname AS ref_table
FROM pg_rewrite AS r
JOIN pg_class AS cl_r ON r.ev_class=cl_r.oid
JOIN pg_depend AS d ON r.oid=d.objid
JOIN pg_class AS cl_d ON d.refobjid=cl_d.oid
WHERE cl_d.relkind IN ('r','v') AND cl_r.relname='TABLENAME'
GROUP BY cl_d.relname
ORDER BY cl_d.relname;
何の結果を探してるんですか? Greg Smithは、すべての依存関係を取得するために必要な内部ビューを表示します。多分あなたはそれを微調整しなければならないかもしれませんが、それだけです。 –
データベース構造全体の一部の「オーバーライド」として機能する既存のデータベースにスキーマを作成して、大部分のテーブルを共有できるようにしたいのではなく、このプロセスを自動化することを望んでいました潜在的に問題にぶつかります。 Andy Lesterのコメントは、外部キーに必要な情報を得るためのpg_constraintテーブルに導かれましたが、pg_viewsとpg_rulesは、どのテーブルがルールやビューに依存しているかを把握するのに必要な情報を持っていません。 –