1. ホーム
  2. sql

[解決済み] [Solved] Oracle SQL Developerで、指定したテーブルを参照しているテーブルを見つけるにはどうしたらいいですか?

2022-04-07 10:29:32

質問

オラクルSQLデベロッパー テーブルの情報を表示している場合、制約を表示して外部キー(つまり、このテーブルから参照されるテーブル)を確認することができます。しかし、どのテーブルがそのテーブルを参照しているのかを知る方法がよくわかりません。

たとえば、私が emp テーブルを使用します。もう1つのテーブル emp_dept は、どの従業員がどの部門で働いているかをキャプチャするもので、これは emp テーブルを emp_id の主キーは emp テーブルを使用します。SQLではなく、プログラム内の何らかのUI要素を通じて)テーブルの emp_dept テーブルが emp テーブルがあることを知らなくても emp_dept テーブルは存在するのでしょうか?

解決するには?

Oracle SQL Developerには、そのようなオプションはありません。

クエリは手作業で実行するか、他のツール(例えば PLSQLデベロッパー はそのようなオプションがあります)。以下のSQLは、PLSQL Developerで使用されているSQLです。

select table_name, constraint_name, status, owner
from all_constraints
where r_owner = :r_owner
and constraint_type = 'R'
and r_constraint_name in
 (
   select constraint_name from all_constraints
   where constraint_type in ('P', 'U')
   and table_name = :r_table_name
   and owner = :r_owner
 )
order by table_name, constraint_name

ここで r_owner はスキーマ、そして r_table_name は、リファレンスを探すためのテーブルです。名前は大文字と小文字を区別します。


Oracle SQL Developerのreportsタブに"All tables / Dependencies"というオプションがあるので、これは以下のものです。 すべての依存関係 を参照しています。 プロシージャ、パッケージ、関数、パッケージ本体、および現在のユーザーがアクセス可能なトリガー間の依存関係(データベースリンクなしで作成されたビューの依存関係を含む)。 . では、このレポートはあなたの質問に対して何の価値もありません。