1. ホーム
  2. oracle

[解決済み] Oracle DBの外部キーと参照するテーブルの一覧表

2022-04-27 03:23:35

質問

あるテーブルの外部キーと、それらが参照するテーブルおよびカラムのリストを返すクエリを探しています。 私は、次の方法で半分まで到達しています。

SELECT a.table_name, 
       a.column_name, 
       a.constraint_name, 
       c.owner
FROM ALL_CONS_COLUMNS A, ALL_CONSTRAINTS C  
where A.CONSTRAINT_NAME = C.CONSTRAINT_NAME 
  and a.table_name=:TableName 
  and C.CONSTRAINT_TYPE = 'R'

しかし、このキーがどのテーブルと主キーを参照しているのかを知る必要があります。 どのようにそれを得るのでしょうか?

どのように解決するのですか?

参照される主キーは、カラムに記述されています。 r_ownerr_constraint_name テーブルの ALL_CONSTRAINTS . これで欲しい情報が手に入ります。

SELECT a.table_name, a.column_name, a.constraint_name, c.owner, 
       -- referenced pk
       c.r_owner, c_pk.table_name r_table_name, c_pk.constraint_name r_pk
  FROM all_cons_columns a
  JOIN all_constraints c ON a.owner = c.owner
                        AND a.constraint_name = c.constraint_name
  JOIN all_constraints c_pk ON c.r_owner = c_pk.owner
                           AND c.r_constraint_name = c_pk.constraint_name
 WHERE c.constraint_type = 'R'
   AND a.table_name = :TableName